您现在的位置:龙卷风首页 ›› 网络编程 ›› 阅读文章

为DataList设计ItemTemplate类

ITemplate ItemTemplate DataList

使用DataList显示数据列表,有时想在程序里面修改ItemTemplate,DataList.ItemTemplate是一个实现ITemplate接口的对象,怎么创建这样的对象呢?

面向对象的编程规则是这样的,只要你设计的类实现出某一个接口,那么此类生成的实例对象就可以向上转型,当作是接口的实例对象。我们查看MSDN文档,发现这个ITemplate接口相当简单,只有一个公共方法:

void InstantiateIn (
	Control container
)

我们只要创建一个类,实现这个方法就可以了。
实现这个方法有几点技巧,在这里记录一下,以备查阅:
1、Control container 是ItemTemplate的容器,你想向ItemTemplate中添加控件,实例化控件之后,将对象添加到这个container中就可以了。
2、web控件一般支持databinding事件,通过这个事件,我们可以取得DataList绑定数据时当前行某一列的值,供我们在程序里面使用。
MSDN上面有一个简单的例子,可以参考一下:

//必须实现的公共方法
public void InstantiateIn(Control container)
{
    Literal l = new Literal();
    l.DataBinding += new EventHandler(this.BindData);
    container.Controls.Add(l);
}
//执行Label的databinding事件逻辑,
//通过NamingContainer取得当前行的DataRowView,进而取得当前行某一列的值。
//MSDN上的示例是DataGrid,DataList和Repeater的情形类似。
public void BindData(object sender, EventArgs e)
{
    Literal l = (Literal) sender;
    DataGridItem container = (DataGridItem) l.NamingContainer;
    l.Text = ((DataRowView) container.DataItem)[column].ToString();
    
}

 

作者 不见不散 本文仅代表作者观点,与龙卷风资讯网立场无关。

我来说两句

内容/Content