9.6 ListView控件
ListView控件使用用户定义的模板显示数据源的值。它类似于GridView控件,可以显示使用数据源控件或ADO.NET获得的数据,但ListView控件和GridView的区别在于它可以使用模板和样式定义的格式显示数据。利用ListView控件,还能够逐项显示数据或按组显示数据,使控制数据的显示方式更加灵活。该控件同样支持选择、排序、分页、删除、编辑和插入记录。
相比GridView控件,ListView控件基于模板的模式为开发员提供了需要的可自定义和可扩展性,利用这些特性,程序员可以完全控制由数据绑定控件产生的HTML标记的外观。ListView控件使用内置的模板可以指定精确的标记,同时还可以用最少的代码执行数据操作。下表9-10列举了ListView控件可支持的模板。
表9-10 ListView控件可支持的模板
通过创建LayoutTemplate模板,可以定义ListView控件的主要(根)布局。LayoutTemplate必须包含一个充当数据占位符的控件。这些控件将包含ItemTemplate模板所定义的每个项的输出,可以在GroupTemplate模板定义的内容中对这些输出进行分组。
在ItemTemplate模板中,需要定义各个项的内容。此模板包含的控件通常已绑定到数据列或其他单个数据元素。
使用GroupTemplate模板,可以选择对ListView控件中的项进行分组。对项分组通常是为了创建平铺的表布局。在平铺的表布局中,各个项将在行中重复GroupItemCount属性指定的次数。
使用EditItemTemplate模板,可以提供已绑定数据的用户界面,从而使用户可以修改现有的数据项。使用InsertItemTemplate模板还可以定义已绑定数据的用户界面,以使用户能够添加新的数据项。
通常需要向模板中添加一些按钮,以允许用户指定要执行的操作。例如,可以向项模板中添加Delete(删除)按钮,以允许用户删除该项。通过在模板中添加Edit(编辑)按钮,可允许用户切换到编辑模式。在EditItemTemplate中,可以添加允许用户保存更改的Update(更新)按钮。此外,还可以添加Cancel(取消)按钮,以允许用户在不保存更改的情况下切换回显示模式。通过设置按钮的CommandName属性,可以定义按钮将执行的操作。下面列出了一些CommandName属性值,ListView控件已内置了针对这些值的行为。
● Select:显示所选项的SelectedItemTemplate模板的内容。
● Insert:在InsertItemTemplate模板中,将数据绑定控件的内容保存在数据源中。
● Edit:把ListView控件切换到编辑模式,并使用EditItemTemplate模板显示项。
● Update:在EditItemTemplate模板中,指定应将数据绑定控件的内容保存在数据源中。
● Delete:从数据源中删除项。
● Cancel:取消当前操作。显示EditItemTemplate模板时,如果该项是当前选定的项,则取消操作会显示SelectedItemTemplate模板;否则将显示ItemTemplate模板。显示InsertItemTemplate模板时,取消操作将显示空的InsertItemTemplate模板。
● 自定义值:默认情况下,不执行任何操作。用户可以为CommandName属性提供自定义值。随后在ItemCommand事件中测试该值并执行相应的操作。
【实例9-5】ListView的使用
本实例使用ListView控件的模板,以SqlDataSource控件为数据源,实现显示db_news数据库的tb_News表的内容并可对数据进行编辑和删除的操作。
01 启动Visual Studio 2012,创建一个ASP.NET Web空应用程序,命名为“实例9-5”。
02 在“实例9-5”中创建一个名为Default.aspx的窗体。
03 单击网站目录下的Default.aspx文件,进入“视图编辑”界面,打开“设计视图”,从工具箱中拖动一个ListView控件和一个SqlDataSource数据源控件。
04 配置SqlDataSource1控件的数据源绑定tb_News数据表。
05 在ListView控件右上方有一个向右的黑色小三角,单击这个小按钮打开“ListView控件任务”列表,展开“选择数据源”下拉列表,从中选择SqlDataSource1选项。
06 在“ListView控件任务”列表中,选择“配置ListView”选项。弹出如图9-27所示的“配置ListView”对话框。该对话框中的“选择布局”列表中显示了控件可用的5种布局方式:网格以表格布局显示数据;平铺是使用组模板的平铺表格布局显示数据;项目符号列表是数据显示在项目符号列表中;流表示数据以使用div元素的流布局显示;单行是使数据显示在只有一行的表中。“选择样式”列表中显示了控件可用的4种外观样式。“选项”下的复选按钮提供控件可实现的功能,有编辑、插入、删除和分页,如果选择“启用分页”,必须在下面的下拉列表中选择分页的导航布局方式:一种是“下一页”/“上一页”页文字导航,另一种是数字页码导航。这里布局选择“网格”,样式选择“专业型”,功能选择启用编辑、启用删除和启用分页,并在分页功能中使用“下一页”/“上一页”页文字导航,最后单击“确认”按钮。
图9-27 “配置ListView”对话框
07 切换到“源视图”,在编辑区中设置分页的PageSize属性,让每页显示5条数据。编写如下代码:
上述代码在服务器数据分页控件DataPager1的定义中,设置其PageSize属性为5表示每页显示5条数据。
08 按快捷键Ctrl+F5运行程序,运行效果如图9-28所示,至于编辑和删除的操作和GridView控件和DetailView控件类似,这里不再重复演示。
图9-28 运行效果