热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

ASP.NET数据绑定之DataList控件

这篇文章主要为大家介绍了ASP.NET数据绑定中的DataList控件,DataList控件以表的形式呈现数据,通过该控件,您可以使用不同的布局来显示数据记录,对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的实践篇,敬请关注!


推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了W3C标准盒模型和IE传统盒模型的区别,探讨了CSS3中box-sizing属性的使用方法及其在布局中的重要性。通过实例分析,帮助读者更好地理解和应用这一关键概念。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • This document outlines the recommended naming conventions for HTML attributes in Fast Components, focusing on readability and consistency with existing standards. ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本报告涵盖了个人博客账号和码云账号的注册过程,以及对网络工程专业学习的反思与展望。通过回顾初入大学时的专业选择,分析当前的专业知识和技能水平,并对未来的职业规划进行了详细讨论。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
author-avatar
fuvogsda99363818
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有