ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序。
当你编写以用户为中心的应用程序时,总需要某种形式的数据集,起码来说,你需要从一个数据源如关系数据库或XML文件检索数据,在显示给用户之前先要进行格式化,尽管ASP.NET之前的版本就提供了以数据为中心的显示控件如GridView,这些控件缺乏专业Web开发人员需要的可自定义和可扩展特性,为了解决这个问题,ASP.NET3.5提供了一个新的控件ListView,它提供了非常优秀的自定义和扩展特性,使用这些特性,你可以以任何格式显示数据,使用模板和样式,同时用最少的代码执行CURD(创建、读取、更新、删除)操作。
本文主要集中于使用新的ListView控件时数据访问步骤,同时还包括高级特性如编辑数据和处理事件。
ListView控件入门
ASP.NET提供的大部分数据绑定控件都是使用额外的标记自动封装显示数据,举例来说,GridView控件在一个HTML表格(
)中显示它的数据,每条记录显示一行(),每个字段显示为一个单元格(在前面的代码中,LayoutTemplate标记内的
标记的ID是设置项目占位符(itemPlaceHolder),它告诉ListView通过| ),虽然你可以使用TemplateField组件自定义GridView的外观,但GridView的输出仍然是限制在一个table组件中的,但有时候你想要完全控制由数据绑定控件产生的HTML标记的外观,这正是ListView控件的优势,ListView控件不是使用额外的标记来封装它的输出内容,而是靠你指定的精确的HTML描述,使用ListView控件内置的模板就可以指定精确的标记,表1列出了ListView控件支持的模板。 模板 用途 AlternatingItemTemplate 交替项目模板 用不同的标记显示交替的项目,便于查看者区别连续不断的项目 EditItemTemplate 编辑项目模板 控制编辑时的项目显示 EmptyDataTemplate 空数据模板 控制ListView数据源返回空数据时的显示 EmptyItemTemplate 空项目模板 控制空项目的显示 GroupSeparatorTemplate 组分隔模板 控制项目组内容的显示 GroupTemplate 组模板 为内容指定一个容器对象,如一个表行、div或span组件 InsertItemTemplate 插入项目模板 用户插入项目时为其指定内容 ItemSeparatorTemplate 项目分隔模板 控制项目之间内容的显示 ItemTemplate 项目模板 控制项目内容的显示 LayoutTemplate 布局模板 指定定义容器对象的根组件,如一个table、div或span组件,它们包装ItemTemplate或GroupTemplate定义的内容。 SelectedItemTemplate 已选择项目模板 指定当前选中的项目内容的显示 最关键的两个模板是LayoutTemplate和ItemTemplate,正如名字暗示的那样,LayoutTemplate为ListView控件指定了总的标记,而ItemTemplate指定的标记用于显示每个绑定的记录,例如:下面的代码显示了在ListView中由HTML table控制的一串项目。 |
| <%# Eval("Name") %> |
你已经看到LisView控件支持的多个模板了,下一步是要创建一个简单的web站点,名字就叫做ListViewExample(你可以从http://assets.devx.com/sourcecode/38579_tt_mainsource.zip下载该站点的示例代码),创建好web站点后,选择Web站点?添加新项目,添加一个新的ASP.NET页面,名字命名为SimpleListView.aspx(见清单1),这个页面将使用ListView控件从AdventureWorks示例数据库中的Product表显示产品数据。
清单1.ListView控件示例清单
<%@ Page Language="C#" %>