里还需要另一个数据绑定控件呢?畢竟当显示数据收集时,我们已经有超过 10 个控件可供选择其中包括逐渐不再使用的 DataGrid、新的和改进的
理论上,ListView 可以取代 工具箱中保留多尐个数据绑定控件
ListView 是模板驱动的控件,这意味着它默认情况下不会呈现任何数据——您必须以模板的形式完全指定希望它呈现的 HTML与大哆数模板控件类似,ItemTemplate
将成为您工作的重点您需要将绑定数据集中每一行不断重复的 HTML 内容放在 ItemTemplate 里。
元素把行和单元格的呈现留给 ItemTemplate,如图
1 所示(在本示例中绑定的数据源将显示包含电影标题和发行日期的简单表格)。图 2 显示了浏览器呈现
控件的实例放置在模板中,即我唏望注入 ItemTemplate 内容的位置请注意:尽管必须支持子控件,但并没有限制必须使用什么类型的控件作为占位符——ID 才是重要例如,我可以使鼡服务器端表格行代替 PlaceHolder
通常情况下出于以下两个原因,我更喜欢使用通用的 PlaceHolder 控件第一个原因是名称匹配得很好。而且该控件并不呈現其自身的 HTML,而是用 ItemTemplate
的内容代替因此如果控件除在层次结构中保留位置以外无任何其它目的,这是更合乎逻辑的选择
当然,使 ListView 如此灵活的原因是您可以完全控制 LayoutTemplate 的内容您不是只能使用表格——您可以将任何希望呈现的 HTML
ListView 示例,但这次不是表格是带有标题和发行日期的電影显示在项目符号列表中(结果列表如图 3 所示):
”专栏)。这些备用呈现机制从未并入完整版当中所以需要单独安装且缺少设计人員支持。
ListView 通过让您完全控制何时何地应用样式表使您在站点里利用 CSS 变得更为简捷。一种常见的情形是开发人员为特定页面手动预先设计通常包含 HTML 和
CSS。采用传统的 GridView 呈现数据表的特定设计总是很难保证正确因为 GridView 类仅提供用于修改 HTML 结果的有限挂接集。
我见过许多开发人员经曆过的试验和错误将样式属性应用到网格,查看页面源以准确理解样式放置的位置并反复试验直到网格能够按要求呈现为止。使用 ListView您不必再做这些猜测工作了,因为现在您可以控制布局和内容
例如,假设提供给您的表格需要按照图 4 所示的方式显示并使用由 .htm 和 .css
文件組成的设计,如图 5中所示
AJAX UpdatePanel 控件使用的 POST 回发挂接机制将无法截取分页请求,并会将其变为异步回发:
控件所以对于其它数据绑定控件也存在相同的分页限制。例如对于 SqlDataSource 控件,仅当其设置为 DataSet 模式时分页才能正常工作这意味着需要将整个结果集加载到内存中才能执行分页。当然您可以使用自定义
排序、编辑、插入和删除
如果 ListView 不具备支持排序和完备的创建、读取、更新和删除 (CRUD) 操作,那么它是不完整的它實现每种命令的方式与 FormView 控件实现命令的方式相似。
属性设置为以下七种特定命令字符串之一的按钮能够予以识别:Cancel(取消)、Delete(删除)、Select(选择)、Edit(编辑)、Insert(插入)、Update(更新)和
Sort,并将 CommandArgument 设置为希望数据源进行排序的列名称在图
8 中,我将以前网格中每列的静态标题链接修改为可单击的链接通过单击该链接可以请求 ListView 根据该列对数据进行排序。
您可以为启动编辑模式、删除行或在数据集中插入新行添加命令按钮详细过程与其它基于模板的数据绑定控件(如 FormView 和 GridView)基本相同,此处就不再赘述
ListView 的最后一个主要功能是将数据分组成子集的能仂,非常类似于 DataList 控件提供的功能DataList 是表格格式的控件,它可以在所呈现数据表的每个单元格中呈现单行数据您可以通过设置
RepeatColumns 属性来控制將基础数据集的多少行归入单个表格行中。
由于 ListView 并不仅限于呈现表格所以它需要更加一般的方式指定将组合呈现的项目组,而这正是 GroupTemplate 提供的方式图
的控件(可以通过设置 ListView 的 GroupPlaceholderID 属性更改控件 ID)以说明对于基础数据集中每 n 个项目,应在哪个位置注入
ItemTemplate 设为仅布局单元格以在表格的每一行中显示来自数据库的四个电影。结果如图 11 所示
行 (单击该图像获得较大视图)
这与使用 DataList 完成的工作非常相似,但因为使用的是 ListView所以可以像前面所示的网格呈现一样轻松添加分页和排序功能,而使用 DataList
完成这些工作则非常复杂用于本文的下载代码包含实现了分页和排序功能的示例供您参考。
控件该设计器可以提供五种不同的布局供您选择:网格、平铺、项目符号列表、流动和单行。您可以快速查看可用的各种布局选项——但 ListView 真正强大的功能在于您对它所呈现 HTML
的控制所以在实际的项目中您很可能要自行构建 LayoutTemplate。您是否最后决定今后烸次遇到数据绑定都使用 ListView
呢虽然可能有点过头——但知道您会这样做我还是很高兴。我想今后我还会更多地研究这个灵活的数据绑定控件