zoukankan      html  css  js  c++  java
  • 为DataGrid 写一个 DropDownListColumn

    Net下有一个类DataGridColumn

    作为 DataGrid 控件的不同列类型的基类。

    有关此类型全部成员的列表。请參阅 DataGridColumn 成员。

    System.Object 
    System.Web.UI.WebControls.DataGridColumn 
    System.Web.UI.WebControls.BoundColumn 
    System.Web.UI.WebControls.ButtonColumn 
    System.Web.UI.WebControls.EditCommandColumn 
    System.Web.UI.WebControls.HyperLinkColumn 
    System.Web.UI.WebControls.TemplateColumn

    我们完毕能够写一个继承DataGirdColumn的类,这样就成了。DropDownListColumn,CheckBoxListColumn等。

    控件的代码例如以下。

    using System; 
    using System.Web.UI; 
    using System.Web.UI.WebControls ; 
    using System.Collections ; 
    using System.Data ;


    namespace CustomColumn 

    /// <summary> 
    /// DataGridCustomColumn 的摘要说明。 
    /// </summary> 
    public class DropDownListColumn :System.Web.UI.WebControls.DataGridColumn 

    //数据源 
    public DataTable DataSource ; 
    //显示的文本字段 
    public string DataTextField ; 
    // 
    public string DataValueField ;

    //DataGrid中要绑定的字段

    public string DataField ;


    public string DataShowField;


    public DropDownListColumn() 

    // 
    // TODO: 在此处加入构造函数逻辑 
    //


    }

    public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType) 

    base.InitializeCell (cell, columnIndex, itemType); 
    switch(itemType) 

    case ListItemType.Header : 
    cell.Text = this.HeaderText ; 
    break;

    case ListItemType.Item:case ListItemType.AlternatingItem : 
    cell.DataBinding +=new EventHandler(cell_ItemDataBinding); 
    break;

    case ListItemType.EditItem : 
    cell.DataBinding +=new EventHandler(cell_EditItemDataBinding); 
    //======================== 
    DropDownList drp = new DropDownList(); 
    cell.Controls.Add(drp); 
    break;



    }

    private void cell_ItemDataBinding(object sender, EventArgs e) 

    TableCell cell =(TableCell)sender ; 
    DataGridItem DGI =(DataGridItem)cell.NamingContainer ; 
    try 

    cell.Text = (DataBinder.Eval(DGI.DataItem,DataShowField)).ToString(); 

    catch 

    throw new Exception("请设置字段"); 

    }

    private void cell_EditItemDataBinding(object sender,EventArgs e) 

    TableCell cell =(TableCell)sender ; 
    DropDownList drp =(DropDownList)cell.Controls[0]; ; 
    ListItem item ; 
    DataGridItem DGI ; 
    try 
    {

    //================ 
    drp.Items.Add(new ListItem("请选择","-1")); 
    //

    for(int k=0;k<=DataSource.Rows.Count -1;k++) 

    DataRow dr = DataSource.Rows[k]; 
    item = new ListItem(); 
    item.Text = dr[DataTextField].ToString(); 
    item.Value = dr[DataValueField].ToString(); 
    drp.Items.Add(item); 
    }

    DGI =(DataGridItem)cell.NamingContainer ;

    string Value = DataBinder.Eval(DGI.DataItem,DataField).ToString();

    item = drp.Items.FindByValue(Value); 
    if(item!=null) 

    item.Selected = true; 


    catch 

    throw new Exception("数据源不正确。"); 
    }

    }



    }

  • 相关阅读:
    需求分析的方法与实践
    系统架构分析与设计方法论
    装修-3
    装修-2
    装修-1
    daikuan
    JAVA容器全面总结
    超图8C iserver启动成功,访问不了网站localhost:8090/iserver/manager,显示404
    Arcgis中给字段添加属性域
    arcgis for server搭建集群环境
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7136443.html
Copyright © 2011-2022 走看看