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

}



}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值