作为 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("数据源不正确。"); }}
} }