欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET数据绑定之DataList控件

程序员文章站 2023-12-18 00:01:40
datalist控件是.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的实践篇,敬请关注!

上一篇:

下一篇: