分享
 
 
 

为DataGrid创建自定义列控件

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

DataGrid中为我们提供了5种常用的列控件

• BoundColumn

• ButtonColumn

• EditCommandColumn

• HyperLinkColumn

• TemplateColumn

通常情况下,这5种列控件都能够完成我们大部分的开发,但是有时遇到特殊情况下,为了简化开发,自定义列控件就派上的用场。

在开发以前,让我们先来了解下列控件的基础知识:

所有的列控件都是来自System.Web.UI.WebControls命名空间,比如BoundColumn来自System.Web.UI.WebControls.BoundColumn命名空间。所有的这些控件都来自DataGridColumn类。

DataGridColumn类具有的属性:

FooterStyle 获取列的脚注部分的样式属性。

FooterText 获取或设置列的脚注部分中显示的文本。

HeaderImageUrl 获取或设置列的页眉节中显示的图像的位置。

HeaderStyle 获取列的页眉节的样式属性。

HeaderText 获取或设置在列的页眉节中显示的文本。

ItemStyle 获取列的项单元格的样式属性。

SortExpression 获取或设置选择进行排序的列时传递到 OnSortCommand 方法的字段或表达式的名称。

Visible 获取或设置一个值,该值指示此列在 DataGrid 控件中是否可见。

DataGridColumn类有两个很重要的方法必须提出,一是Initialize方法,二是InitializeCell方法。Initialize方法提供基实现以将从 DataGridColumn 类派生的列重置为它的初始状态。InitializeCell 方法提供基实现以将从 DataGridColumn 类派生的列中的指定单元格重置为它的初始状态。(具体这两个方法的说明请大家自行查阅)

好了,说了那么多废话,让我们马上进入到自定义列控件的开发。

我们先来做一个非常简单的列控件,功能就是显示指定的文字。

首先创建一个类库项目,命名为SimpleColumn,然后创建继承自DataGridColumn类的HelloColumn类,代码如下:

using System;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace SimpleColumn

{

/**//// <summary>

/// Class1 的摘要说明。

/// </summary>

public class HelloColumn : DataGridColumn

{

public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType)

{

base.InitializeCell (cell, columnIndex, itemType);

if((itemType == ListItemType.AlternatingItem)||(itemType == ListItemType.SelectedItem)||(itemType == ListItemType.Item))

{

cell.Text = "Hello";

}

}

}

}

最后在页面上引用这各类

<%@ Register TagPrefix="custCols" Namespace="SimpleColumn" Assembly="SimpleColumn" %>

在DataGrid中添加Column,如下:

<Columns>

<custcols:HelloColumn></custcols:HelloColumn>

</Columns>

最后效果:

这样一个简单的自定义列控件就创建好了,是不是很简单呢?由于是继承DataGridColumn类,所以在显示的时候大家还可以设置这个列控件的页眉文字等属性。

接下来,我们再来创建一个带自定义属性的列控件。这个列控件主要完成的任务就是可以自定义文字的显示个数,多余的部分用…显示,相信大家经常遇到这样的情况吧。

首先我们创建一个继承自BoundColumn类的LimitColumn类。BoundColumn类继承自DataGridColumn类,用来显示数据源中的字段内容。LimitColumn控件将会用到BoundColumn类中的FormatDataValue方法,此方法用来指定显示字段内容的格式。

然后设置自定义字数属性CharLimit,具体代码如下:

public class LimitColumn : BoundColumn

{

private int m_CharLimit = -1;

public int CharLimit

{

get

{

return this.m_CharLimit;

}

set

{

if(value>=0)

{

this.m_CharLimit = value;

}

else

{

this.m_CharLimit = -1;

}

}

}

protected override string FormatDataValue(object dataValue)

{

if(this.m_CharLimit == -1)

{

return base.FormatDataValue (dataValue);

}

else

{

string defValue = base.FormatDataValue (dataValue);

if(defValue.Length < this.m_CharLimit)

{

&nbs

[1] [2] [3] [4] [5] [6] [7] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有