Robin's Blog

记录 积累 学习 成长

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     公司最近的一个项目需要涉及到动态订单,即每位用户订单数据表的属性列是可以自定义的,数据表字段是动态的,所以使用GridView等控件对未知数据表进行操作时,需要使用动态模板。实现如下:                          

为GridView控件创建自定义模板

当使用模板控件时,可能直到运行时还不了解所需要的模板,或者模板中应该包括的文本或者控件。在这种情况下,可以在代码中动态创建模板。可以在代码中为所有使用模板的控件创建模板:DataList、Repeater、GridView、FormView、DetailsView等。对于GridView控件而言,使用模板可定义列,而不是其他控件那样的行布局模板。下面实例将介绍使用GridView控件自定义模板的应用程序。

GridView模板是实现ITemplate接口的类。该类定义了将在GridView列中显示的控件,以及数据如何绑定这些控件,同时还能够通过一些特定代码来处理页眉和页脚。就本例而言,将从零开始讲解一个简化的GridView示例,它使用模板格式化GridView的内容。虽然这个示例非常简单,但很多复杂的情况都可以通过扩展该示例实现。下面开始介绍自定义模板类的实现。

1.创建自定义模板类

自定义模板类(名称为CustomGridViewTemplate)包括的代码放置在GridView控件中,这些代码内的控件完成实际工作格式化控件,绑定数据的工作。由于CustomGridViewTemplate类实现ITemplate接口,所以该类提供了InstantiateIn()方法的实现。在该方法中定义了生成包括子控件的GridView控件的行为。示例一列举了该类的实现代码。

示例一:使用自定义模板格式化GridView

Code

 

 

本例仅使用了文本标签来显示数据,但是并不限于单个控件。该方法还通过注册事件处理程序来设置数据绑定:

// 为执行数据绑定注册事件处理程序
label.DataBinding += new EventHandler(this.label_DataBinding);

正如所期待的那样,当数据绑定到GridView时会调用数据绑定事件处理程序。在数据绑定事件处理程序中,获取了指向控件容器的引用,同时还格式化了数据。

2.使用模板

如果将CustomGridViewTemplate类存储到App_Code文件夹中,那么对于Web站点的所有ASP.NET页面而言,都可以使用该类。示例二列举了如何通过GridView控件使用CustomGridViewTemplate。

.CS文件

Code

 .ASPX文件

Code

 

 示例中唯一的技巧是将模板类关联到GridView。这是通过创建新的TemplateField对象,接着为ItemTemplate和HeaderTemplate将TemplateField与CustomGridViewTemplate关联起来实现的。注意,可以使用相同的方法来设置其他模板,例如AlternatingItemTemplate和FooterTemplate。

posted on 2009-02-09 14:17  Robin99  阅读(3813)  评论(0编辑  收藏  举报