上一篇:在Web上用style实现完美颜色渐变 >>
为DataGrid 写一个 DropDownListColumn
作为 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("数据源不对。");
}
}
}
}
Aspx页面调用。
先注册:
<%@ Register TagPrefix="DrpColumn" NameSpace="CustomColumn" Assembly="DropDownListColumn" %>
调用
<asp:DataGrid id="dgTeacher" runat="server" Width="100%" AutoGenerateColumns="False" AllowPaging="True"
CssClass="DataGrid" BorderColor="#333333" BorderStyle="Solid">
<Columns>
<DrpColumn:DropDownListColumn HeaderText="导师"></DrpColumn:DropDownListColumn>
<asp:BoundColumn DataField="SpecName2" ReadOnly="True" HeaderText="主修专业"></asp:BoundColumn>
<DrpColumn:DropDownListColumn DataShowField="SpecName" DataField="SpecGUID" HeaderText="兼岗专业"></DrpColumn:DropDownListColumn>
<asp:BoundColumn DataField="CreatedDT" ReadOnly="True" HeaderText="创建日期" DataFormatString="{0:d}"></asp:BoundColumn>
<asp:BoundColumn DataField="CreatedBY" ReadOnly="True" HeaderText="创建者"></asp:BoundColumn>
<asp:BoundColumn DataField="SrcIP" ReadOnly="True" HeaderText="来源IP"></asp:BoundColumn>
<asp:BoundColumn DataField="UpdatedBY" ReadOnly="True" HeaderText="修改者"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="更新" HeaderText="操作" CancelText="取消" EditText="编辑"></asp:EditCommandColumn>
<asp:ButtonColumn Text="<span OnClick=‘’return confirmdel();‘’>删除</span>" HeaderText="操作"
CommandName="Delete"></asp:ButtonColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
下一篇:写了一个求最大值与最小值的函数 >>
相关文章:
- · Microsoft的25位CDKey里有什么
- · 一个很强的验证脚本
- · 深入剖析C#继承机制(2)
- · 深入剖析C#继承机制(1)
- · 在c# Form中创建一个可拖动的矩形流程节点
- · 纯ASP(VBscript)写的全球IP地址搜
- · 实现有管理功能的ASP留言板
- · 一个ASP版的图片浏览管理器
- · Recordset对象方法
- · 利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表
- · 运用Stored Procedure实现商城的月销售量报表
- · 运用Stored Procedure验证login的输入
- · ASP在线压(缩)解(压)rar
- · 如何实现无刷新的DropdownList联动效果
- · 查找Table中的单个列长度并判断是否属于改表(存储过程)
- · 将ASP纪录集输出成n列的的表格形式显示的方法
- · C#排序算法大全
- · 九月份精彩网络讲座让您深入了解微软最新开发技术
- · DHTML技巧--中止网页的提交
- · 分页控制
- · 用ASP实现中英文字体的自动选择
- · 使用ADSI创建虚拟目录
- · asp+的论坛列表程序---代码部分
- · 从ASP迁移至ASP+ --转换其他的页面吧
- · 从ASP迁移至ASP+ -----进入DataSet
- · 一个非常简单的将半角转换为中文的函数
- · 从ASP迁移至ASP+
- · 从ASP迁移至ASP+ --将HTML表格转换为ASP+数据列表
- · 从ASP迁移至ASP+ --处理会话变量(Session Variables)
- · asp+的论坛列表程序---页面部分
- · 关闭屏幕保护
- · 在ASP中使用“Request”时应注意的问题
- · 用ASP+制作图形
- · 在ASP中使用断开的记录集
- · ASP.NET与ASP的不同
- · 小窗口大学问--玩转弹出窗口
- · 提高ASP页面的执行效率
- · Cookie读写例子
