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

}

}



}

为DataGrid 写一个 DropDownListColumn的更多相关文章

  1. 怎样写一个webpack loader

    div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...

  2. 请写一个php函数,可以接受任意数量的参数

    请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...

  3. 学记:为spring boot写一个自动配置

    spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...

  4. 自己写一个 jQuery 插件

    我知道这一天终将会到来,现在,它来了. 需求 开发 SharePoint 的 CSOM 应用时,经常需要在网页上输出一些信息. 这种需求和 alert 的弹窗.F12 的断点查看信息的场景是不一样的: ...

  5. 深入浅出React Native 3: 从零开始写一个Hello World

    这是深入浅出React Native的第三篇文章. 1. 环境配置 2. 我的第一个应用 将index.ios.js中的代码全部删掉,为什么要删掉呢?因为我们准备从零开始写一个应用~学习技术最好的方式 ...

  6. 【转】用C写一个简单病毒

    [摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...

  7. JS入门学习,写一个时钟~

    <!-- 耽搁了几天,于是又继续回到JS的学习了~~ 各种头大,加油吧... --> <!doctype html><html><head> <t ...

  8. JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力。。

      JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力..   小森执行一 ...

  9. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

随机推荐

  1. 网站开发综合技术 一 JavaScript简介 二JavaScript语法

    第1部分 JavaScript简介 1.JavaScript它是个什么东西? 它是个脚本语言,需要有宿主文件,他的宿主文件是html文件. 2.它与Java有什么关系? 没有什么直接联系,java是S ...

  2. 【Android开发】XML文件解析

    最近在做一个项目,涉及到XML文件的解析,废话不多说,如下: 读取 private ArrayList<Data> readXMLLocked() { File file = new Fi ...

  3. UVM基础之---------Reporting Classes

    Reporting 类提供了一组工具用于格式化报告输出 report机制大概包括四个主要的类uvm_report_object,uvm_report_handler, uvm_report_serve ...

  4. Java 基础入门随笔(11) JavaSE版——继承、覆盖、抽象类

    1.面向对象的特征二:继承 定义: 指一个对象直接使用另一对象的属性和方法. 继承好处: 1.提供代码的复用性. 2.让类与类直接产生了关系,给第三个特征多态提供了前提. java中支持单继承.不直接 ...

  5. c3p0参数详解

    <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数.Default: 3 --> <property name="acquireIncrement"& ...

  6. 梦想CAD控件安卓文字样式

    增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现代码如下: // 增加文字样式 //getCurrentDatabase()返回当前数据库对象 //getTextstyle() ...

  7. js读写txt文件

    view plain<script language="javascript" type="text/javascript"> //读文件funct ...

  8. 14Oracle Database 高级事务,游标

    Oracle Database 高级事务,游标 隔离级别 脏读 不可重复读 虚读 读未提交 Read uncommitted 可以 可以 可以 读已提交 Read committed 不可以 可以 可 ...

  9. sql常用手法(二)

    drop,TRUNCATE和delete的区别 1.DROP删表,表结构将删了,当然数据也不存在了2.TRUNCATE和DELETE删数据,表结构还在3.DELETE可以带条件删除,TRUNCATE是 ...

  10. Android studio升级后原有项目无法正常编译运行问题

    Android studio工具升级后Gradle版本问题 背景 升级AndroidStudio到最新版本后,原来可正常编译输出AndroidTest的项目无法正常编译通过. 原因 升级后的Andro ...