为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("数据源不正确。");
}
}
}
}
最新文章
- [NHibernate]存储过程的使用(一)
- 李洪强iOS经典面试题132-版本控制
- Silverlight弹出层(转载)
- 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程
- appFramework在三星某些机型上的兼容问题
- Mac ssh登陆linux并且显示linux图形
- HTML5兼容IE各版本的写法
- linux cpu load学习笔记
- 简说Java线程的那几个启动方式
- 大数据学习之HDFS基本API操作(下)06
- mysql navcate longblob 查询结果导出倒入
- [20190214]11g Query Result Cache RC Latches补充.txt
- .net amr格式文件转换成mp3格式文件的方法
- 关于导出csv格式文件的身份证号、日期的处理
- Linux命令一览
- kibana 的search 的的搜索提示挡住输入框
- mysql 数据操作 单表查询 目录
- spring AbstractRoutingDataSource实现动态数据源切换
- WebApiTestHelpPage
- BTrace追踪Hadoop部署
热门文章
- js操作Attribute,控件的各种属性.....maxlength,style...
- C#模拟百度登录并到指定网站评论回帖(五)
- redis+mysql读写方案
- Java编程思想读书笔记_第三章
- WebApi实现IHttpControllerSelector问题
- quartz在集群环境下的最终解决方案
- 【Python-2.7】大小写转换函数
- HDU_3732_(多重背包)
- 第一章 React新的前端思维方式
- zabbix+docker