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