ListView(2)
来源:互联网 发布:网络主管招聘 青岛沃林 编辑:程序博客网 时间:2024/06/05 02:26
7.4.6 ListView(2) ListView组的显示 除了Item Container之外,ListView还支持另一个容器类型Group Container。Group Container与GroupTemplate一起使用,可以把较大的数据项组分成小组。每一组中的项数由控件的GroupItemCount属性设置。在显示一定数量的项模板后,要输出一些额外的HTML时,就可以使用GroupTemplate。使用GroupTemplate时,存在与上一节相同的问题。但在这里,不是把两个模板关联起来,引入GroupTemplate意味着要关联3个模板:ItemTemplate关联到GroupTemplate上,GroupTemplate关联到LayoutTemplate上。 ListView显示时,看起来似乎已经定义了GroupTemplate。如果控件找到了GroupTemplate,就确定LayoutTemplate上是否提供了Group Container。如果已经定义了GroupTemplate,控件就要求定义Group Container,否则就抛出异常。Group Container的工作方式与上一节描述的Item Container相同,但Group Container元素的id值应是groupContainer,而不是itemContainer。与Item Container一样,控件查找的特定id值可以通过改变控件的GroupContainerID属性来改变。 查看ListView的Tiled布局生成的标记时,可以看到Group Container的一个例子。这个布局的LayoutTemplate显示了一个用作Group Container的表,如下所示:<table id="groupContainer" runat="server" border="0" style="">
</table>
定义了Group Container后,还需要定义Item Container,但不是在LayoutTemplate中定义,而需要在GroupTemplate中定义。再次查看Tiled布局,会发现在其GroupTemplate中,定义了一个用作Item Container的表行。
<tr id="itemContainer" runat="server">
</tr>
显示时,ListView先输出其LayoutTemplate,再输出GroupTemplate。之后ItemTemplate输出GroupItemCount属性定义的次数。达到组的项数后,ListView就输出GroupTemplate,再输出ItemTemplate,为它绑定的每个数据项重复这个过程。
使用EmptyItemTemplate
使用GroupTemplate时,还要注意绑定到ListView控件上的数据项数可能不能被GroupItemCount值整除。如果创建了一个ListView布局,它依赖HTML表排列其数据项,就一定要注意这个问题,因为最后一行定义的表单元格数可能少于前面的表行,使控件输出的HTML无效,并可能导致显示问题。要解决这个问题,ListView控件包含EmptyItemTemplate。如果使用GroupTemplate,且没有足够的数据项达到GroupItemCount值,就显示这个模板。图7-34显示了使用EmptyItemTemplate的一个例子。
图 7-34
在这个例子中,绑定到ListView控件上的数据源包含4个数据项,但控件的GroupItemCount设置为3,表示在每个组中显示3个ItemTemplate。而在显示的第二个组中只有一个数据项,因此,该控件使用EmptyItemTemplate填充剩余的项。
在ListView的Tiled布局中可以看到使用EmptyItemTemplate的另一个例子。
2. ListView数据绑定和命令
因为ListView不在运行期间生成任何布局标记,也不像GridView那样包含任何自动生成字段的逻辑,所以每个模板都使用标准的ASP.NET内嵌数据绑定语法,来定位每个数据项在已定义布局中的值。
提示:
ASP.NET内嵌数据绑定语法详见本章后面的内容。
查看控件创建的默认Grid布局的ItemTemplate,就可以看到这些值。在这个模板中,绑定数据源的每一列都使用一个ASP.NET标签显示,该标签的文本属性设置为一个数据绑定计算表达式:
<asp:Label ID="ProductNameLabel" runat="server"
text='<%# Eval("ProductName") %>' />
因为该控件使用这个灵活的模型显示绑定的数据,所以可以利用这一点把数据放在模板的指定位置上,甚至可以使用ASP.NET的数据绑定功能处理绑定的数据,之后显示它们。
每个显示绑定数据的ListView模板都使用相同的ASP.NET绑定语法,只是为数据提供不同的模板。例如,如果可以在Grid布局中编辑,就会发现EditItemTemplate根据底层的数据类型,用文本框或复选框替代了ItemTemplate使用的ASP.NET标签。
<asp:TextBox ID="ProductNameTextBox" runat="server"
Text='<%# Bind("ProductName") %>' />
另外,这个灵活性还允许选择让终端用户如何编辑数据(假定使数据可以编辑)。这里不使用标准的ASP.NET文本框,也可以用下拉列表或第三方编辑控件来替代它。
要让ListView为数据项显示EditItemTemplate,该控件需要使用与GridView控件相同的命令概念。ItemTemplate提供了3个命令,可用于改变数据项的状态。
表 7-9
命 令 名
说 明
Edit
使指定的数据项进入编辑模式,为数据项显示EditTemplate
Delete
从底层数据源中删除指定的数据项
Select
把ListView控件的Selected索引设置为指定数据项的索引
这些命令与ASP.NET按钮控件的CommandName属性一起使用。使用ListView配置对话框激活Editing和Deleting,就可以看到在ListView的默认Grid布局的ItemTemplate中使用的这些命令。这么做会生成一个包含Edit和Delete按钮的新列,这两个按钮把CommandName属性分别设置为Edit和Delete。
<asp:Button ID="DeleteButton" runat="server"
CommandName="Delete" Text="Delete" />
<asp:Button ID="EditButton" runat="server"
CommandName="Edit" Text="Edit" />
ListView的其他模板提供了其他命令,如表7-10所示。
表 7-10
模 板
命 令 名
说 明
EditItemTemplate
Update
更新ListView数据源中的数据,并把数据项返回给ItemTemplate进行显示
EditItemTemplate
Cancel
取消编辑,并把数据项返回给ItemTemplate
InsertItemTemplate
Insert
把数据插入ListView数据源
InsertItemTemplate
Cancel
取消插入,重置InsertTemplate控件绑定值
- ListView(2)
- ListView嵌套GridVIew(2)
- listview性能优化(2)
- 19.LIstView使用(2)
- QML ListView Demo(2)
- Listview 2
- android ListView添加button(2)
- Android4.0.4编程日记(2)--ListView
- ListView常用用法2(分类总结)
- ListView控件:(2)SimpleAdapter适配器生成
- ListView(2)SimpleAdapter与SimpleCursorAdapter详解
- Android:如何在ListView中嵌套ListView (如何实现二级目录结构?)(2)
- ListView控件学习系列2-编辑ListView
- 【listview精深系列2】listview基础讲解
- ListView item渐变背景(ListView必备!)
- ListView item渐变背景(ListView必备!)
- Android中Listview(二)--圆角listview
- Android中Listview(三)--圆角listview
- 参考:ASP错误代码说明
- 终于开通自己的博客
- 1-9随机赋值给一个9位数组
- 参考:HTML中的特殊字符转义
- Alert can't display any text
- ListView(2)
- 视频压缩编解码标准综述
- STM32(FSMC)和LPC2214(EMC)驱动"CPLD+SRAM 4.3寸(PSP)专驱动器"
- 关于计算机图形学的学习
- CLR:在公共语言运行时
- C语言-unsigned使用误区
- lib和dll文件的区别和联系
- 反射枚举变量
- Silverlight MMORPG网页游戏开发课程[一期] 第十二课:战斗系统之普通攻击