ASP.NET数据绑定之DataList控件
datalist控件是.net中的一个控件。datalist控件以表的形式呈现数据(在属性生成器中可以编辑),通过该控件,您可以使用不同的布局来显示数据记录(使用模板编辑),例如,将数据记录排成列或行的形式。您可以对 datalist控件进行配置,使用户能够编辑或删除表中的记录(使用edititemtemplate模板和selecteditemtemplate模板)。datalist控件不使用数据源控件的数据修改功能,您必须自己提供此代码。
一、datalist 与 repeater比较
- 1、datalist比repeater多了两个模板:selecteditemtemplate和edititemtemplate,支持选择和编辑功能。
- 2、datalist有可视化的模板编辑和属性编辑,而repeater控件不指定内置布局,与datalist相比,数据编辑起来比较麻烦。
- 3、datalist中的内容是以表格的形式呈现数据,这样一来,使数据排列更加美观,而repeater自己需要添加表格才行。
- 4、datalist将项显式放在html表中,repeater则不然。
二、datalist中的模板
itemtemplate、alternationgitemtemplate、separatortemplate、headertemplate、footertemplate、selecteditemtemplate 、 edititemtemplate。
三、事件
1、冒泡事件
在“.net” 框架包含三个支持事件冒泡的标准控件:repeater、datalist和datagrid控件。这些控件可以让你捕获其子控件的事件。当子控件产生一个事件时,事件就“冒泡”传给包含该子控件的容器控件,并且容器控件就可以执行一个子程序来处理该事件。
datalist控件支持事件冒泡,可以捕获datalist内包含的控件产生的事件,并且通过普通的子程序处理这些事件。讲到这里有些人可能不太明白事件冒泡的好处所在,这样,我们反过来思考:如果没有事件冒泡,那么对于datalist内包含的每一个控件产生的事件都需要定义一个相应的处理函数,如果datalist中包含10000个控件呢?或者更多呢?那我们得写多少个事件处理程序。所以有了事件冒泡,不管datalist中包含多少个控件,我们只需要一个处理程序就可以了。我的理解就是将程序封装,再通过继承的机制决绝问题。
2、datalist支持的事件
editcommand:由带有commandname=”edit”的子控件产生。
cancelcommand:由带有commandname=”cancel”的子控件产生。
updatecommand:由带有commandname=”update”的子控件产生。
deletecommand:由带有commandname=”delete”的子控件产生。
itemcommand:datalist的默认事件。
3、事件触发的过程
有了这五个事件,那么当我点击了datalist控件中的某一个按钮的时候,应该触发哪一个事件呢?什么时候才触发它们呢?
在“asp点net ”中有三个控件带有commandname属性,分别是button、linkbutton和imagebutton,可以设置它们的commandname属性来表示容器控件内产生的时间类型。比如,如果设置datalist中的一个linkbutton的commandname属性为“update”,那么点击此按钮的时候,将会触发datalist的updatecommand事件,我们可以将相关处理代码写到对应的事件处理程序中去。
注意:itemcommand事件是datalist控件产生的默认事件,任何datalist控件中commandname为delete/cancel/update/edit的按钮被点击后,事件itemcommand首先被触发,然后才是相应的事件。
四、编辑datalist中的数据
1、通过选择datalist中某一项的主键而进行编辑,使用datalist控件中的datakeys集合。
在选择datalist中的一个项时,通常需要获取与这个项相关联的主键的值。可以使用datakeys集合来获取与一个项想关联的主键的值。在创建了datakeys集合后,就可以通过传递项的索引值给datakeys集合来获取datalist中与相关项关联的主键值。比如,要获取由 datalist显示的第三项的主键值,就可以是使用:datalist1.datakeys[2],如果要在datalist控件的事件处理函数中发生事件的项的主键值,则用:datalist1.datakeys[e.item.itemindex]。
2、编辑datalist中的项
可以使用datalist控件来编辑数据表中的某一条记录,事实上,在datalist中完成这样的操作非常的方便,不像在asp中需要在多个页面中来回切换。datalist控件具有一个名为edititemtemplate的模板,在edititemtemplate中放置表单控件,以便能在datalist中编辑特定的项。当datalist的edititemindex属性的值为datalist某一项的索引的时候,对应的项将会以edititemtemplate模板显示;当属性值为-1时,表示不显示edititemtemplate模板。
3、选择datalist中的项
数据绑定到datalist后,datalist中的每一项都有一个索引号,第一项的索引为0,依次往下编号。我们可以利用索引来确定datalist中具体的项。
datalist默认以itemtemplate或itemtemplate+alternatingitemtemplate模板显示数据项,当datalist的selectedindex属性的值为datalist某一项的索引的时候,对应的项将会以selecteditemtemplate模板显示。当该属性值为-1时,表示不显示selecteditemtemplate模板。
说了这么多,光说不练是嘴把式,上面都是一些理论知识,只有自己用到了才能深深地体会到其中的功能,下一篇就是针对datalist的实践篇,敬请关注!
推荐阅读
-
ASP.NET数据绑定之DataList控件实战篇
-
ASP.NET Mvc开发之查询数据
-
ASP.NET数据绑定之GridView控件
-
在ASP.NET 2.0中操作数据之三十一:使用DataList来一行显示多条记录
-
在ASP.NET 2.0中操作数据之三十五:使用Repeater和DataList单页面实现主/从报表
-
在ASP.NET 2.0中操作数据之三十二:数据控件的嵌套
-
在ASP.NET 2.0中操作数据之三十:格式化DataList和Repeater的数据
-
在ASP.NET 2.0中操作数据之二十九:用DataList和Repeater来显示数据
-
在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表
-
在ASP.NET 2.0中操作数据之三十六:在DataList里编辑和删除数据概述