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

}

}

}

}

时间: 2024-09-29 00:08:38

为DataGrid 写一个 DropDownListColumn的相关文章

请写一个算法,用于将list集合内重复元素剔除

package Homework; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** * list集合是否可以包含重复元素? * 如果可以,请写一个算法,用于将list集合内重复元素剔除. * @author 张致远 * */public class Homework2 { public static void main(String[]

用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中

我最近在用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中,第一次写项目,写过这类项目的多多提意见,哪方面的意见都行,有代码或者demo的求赏给我,谢谢

c语言:写一个函数建立一个有3名学生数据的单向动态链表

写一个函数建立一个有3名学生数据的单向动态链表. 解:程序: #include<stdio.h> #include<stdlib.h> #define LEN sizeof(struct Student) struct Student { long num; float score; struct Student *next; }; int n; struct Student *creat(void)//定义函数返回一个指向链表头的指针 { struct Student *head

为PhoneGap写一个android插件

为PhoneGap写一个android插件,要怎么做? 其实这句话应该反过来说,为android写一个PhoneGap插件,要怎么做? 这里以最简单的Hello World!为例,做个说明: 1.第一步,要先建立一个支持PhoneGap(Cordova)的android工程 因为这个插件本质上是安卓插件,用于PhoneGap,因此,要二者支持才行,所以我们要建立一个支持PhoneGap(Cordova)的android工程,插件在这个工程里面编写. 扫盲:PhoneGap现在已经出售给了Apac

如何使用viewpager与fragment写一个app导航activity

今天我们来看一下如何使用viewpager和fragment组合来写一个app导航activity,这里使用到了android开源控件viewpagerindicator,有兴趣的同学可以去它网站上看看它的介绍. 附上效果截图一张: demo中只有一个activity,是用activity_main.xml来布局,其内容如下: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:and

写一个python的服务监控程序

写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python站点下载源码.解压到Redhat上.然后执行以下的命令: # ./configure --prefix=/usr/local/python27 # make # make install 这样安装之后默认不会启用Python2.7.须要使用/usr/local/python27/bin/python2.7调用新版本号的python. 而

从无到有写一个运维APP(三)完结篇

前言:自己的挖的坑还得填,此篇为完结篇,环境的搭建参考第一篇从无到有写一个运维APP(一),至于第二篇就跳过吧,写个APP没那么复杂.由于自己现在无业游民,所以没有什么现成的环境,环境就随便找个公网的..再者当下的完成度应该算不上一个完整的APP,但是作为参考,依瓢画葫芦绝对足够了,如果等完整产品,可能得等一段时间了,下面的是该项目的地址. 项目地址: https://github.com/youerning/MyApp(star一下呗) 效果图如下 文章目录: 准备工作 代理 页面框架 获取数

Webpack-源码三,从源码分析如何写一个plugin

经过上一篇博客分析webpack从命令行到打包完成的整体流程,我们知道了webpage的plugin是基于事件机制工作的,这样最大的好处是易于扩展.社区里很多webpack的plugin,但是具体到我们的项目并不一定适用,这篇博客告诉你如何入手写一个plugin,然后分析源码相关部分告诉你你的plugin是如何工作.知其然且知其所以然. 该系列博客的所有测试代码. 从黑盒角度学习写一个plugin 所谓黑盒,就是先不管webpack的plugin如何运作,只去看官网介绍. Compiler和Co

如何写一个跨浏览器的事件处理程序 js

如何 写一个合格的事件处理程序,看如下代码: EventUtil可以直接拿去用 不谢 <!DOCTYPE html> <html> <head> <title> </title> </head> <body> <input type="button" name="ids" id="ids" value="value"> <sc