ListView详解.docx

上传人:hs****ma 文档编号:543488065 上传时间:2023-06-20 格式:DOCX 页数:22 大小:3.52MB
返回 下载 相关 举报
ListView详解.docx_第1页
第1页 / 共22页
ListView详解.docx_第2页
第2页 / 共22页
ListView详解.docx_第3页
第3页 / 共22页
ListView详解.docx_第4页
第4页 / 共22页
ListView详解.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《ListView详解.docx》由会员分享,可在线阅读,更多相关《ListView详解.docx(22页珍藏版)》请在金锄头文库上搜索。

1、ListView详解在VS2008中新增了两个非常好用的两个数据控件:ListView和DataPager。使用这两个控件可以很灵活地实现数据的显示、分组、分页、排序、编辑、插入、删除等功能。在VS2008之前,要显示集合型数据,我们一般会采用Repeater、DataList或GridView等控件来实现。GridView为我们提供了强大的数据显示功能,但是它把界面限制在一个标准的行列Table表格中,比如难以实现在一行显示多条数据的功能;DataList的界面灵活度比GridView要强一些,但使用起来远没有GridView那样简单方便;而Repeater一般是用来显示数据,它内存的事件与

2、模板太少,功能不如DataList强大。ListView兼有GridView的易用性,又拥有DataList的灵活性,是我们DotNew开发的好工具。签于网上介绍此控件的中文文章太少、太肤浅,在这篇文章中我们来深入研究一下ListView+DataPager的强大功能。一、ListView初登场像GridView和DataList等控件都会在显示数据的时候,会自动我们添加一些额外的标记,如:GridView会在未经我们同意的情况下,自动生成等元素,并把数据绑定显示在中,虽然可以使用模板列来自定义列的显示,但模板列仍逃不出GridView强行加入的标记,所以GridView做出来的办面往往是规规

3、正正的二维表格,要应对企业开发中的各种表格化界面显得为不从心(虽然GridView也可以实现单元格的合并、GridView的嵌套,但工作量很大,自由度也很受限制)。而ListView在显示数据的时候不会为我们强行添加任何额外的HTML标记,ListView界面的HTML代码完全由开发人员通过以下11个模板来自行控制的。AlternatingItemTemplateEditItemTemplateEmptyDataTemplateEmptyItemTemplateGroupSeparatorTemplateGroupTemplateInsertItemTemplateItemSeparatorT

4、emplateItemTemplateLayoutTemplateSeletedItemTemplate其中比较常用的模板有LayoutTemplate和ItemTemplate两个模板,LayoutTemplate用来设置ListView外围的标记,而ItemTemplate是用来生成ListView绑定项的内容。如:使用ListView显示列表项时,模板代码如下:图1 从上图我们看出,LayoutTemplate和ItemTemplate分别独立定义,那怎么来把二者进行组合形成一个显示界面呢?我们只需要在LayoutTemplate模板中定义一个“runat=server”的元素,并把这个

5、元素的ID设为ListVieiw控件的ItemPlaceholderID属性所指定的值即可(ListView控件的ItemPlaceholderID属性的默认值为“itemPlaceholder”,如上图中我们定义PlaceHolder的ID就是“itemPlaceholder”。当然我也可以把 PlaceHolder的ID指定为另一个值“aaa”,但需要同时把ListView控件的ItemPlaceholderID的属性设为“aaa”)。在ListView呈显的时候,就会把LayoutTemplate和ItemTemplate结合起来一起呈现:首先:用ItemTemplate定义的数据项模板

6、来生成记录项集合图2然后:再把生成的记录项集合内容替代LayoutTemplate中ID=itemPlacehoder的元素图3下面我们来试着做个例子显示数据:在这里我们还是使用“汽车表”作为示例数据。ListView代码如下图所示图4在这个例子中,我们把ListView控件的ItemPlaceholderID属性修改为“placeForItem”,并在LayoutTemplate模板中把第二设置为runat=server,并且把该的ID也设置为“placeForItem”。在ItemTemplate模板中我们从开始设置模板,在运行的时候会用ItemTemplate生成的数据项(.)去替换La

7、youtTemplate中的运行结果:图5图6二、分组显示数据上面我们使用LayoutTemplate和ItemTemplate实现数据的显示,就是在LayoutTemplate中把要引用ItemTemplate数据项的服务端元素的ID设置为ListView控件的ItemPlaceholderID的值。这种显示方式直接把ItemTemplate生成的内容嵌入到LayoutTemplate中。有的时候这种显示方式不能满足需求,比如:想在一行中显示两项或多项数据的话,上面的方式就无能为力了。图7要实现上面这种效果就需要使用GroupTemplate模板。它的实现思想不再是在LayoutTempla

8、te中直接引用ItemTemplate了,而是在LayoutTemplate中引用GroupTempate,在GroupTemplate中再引用ItemTemplate,然后再设置ListView控件的GroupItemCount属性。在运行的时候,先把ItemTemplate和GroupTemplate整合在一起,然后再根据ListView控件的GroupItemCount属性值,决定每个GroupTemplate中放置几个ItemTemplate。这样我们就可以在LayoutTemplate一行中显示多组数据了。图8从上面的代码中我们看出,就是在LayoutTemplate和ItemTem

9、plate中间加了一个GroupTemplate。在每个GroupTemplate中显示三个ItemTemplate,然后再把所有GroupTemplate生成的内容嵌入到LayoutTemplate中去。图9上面的例子我们使用列表项实现分组数据显示,下面我们使用表格实现分组数据的显示。还是以汽车表为例,我要实现一行显示两辆车的信息。因此我们可以把显示表格设计成这个样子: . . 外层控制总体部局,外层控制一行显示几项信息,内层的显示汽车详细信息。1.ListView控件的GroupItemCount属性设置为2,这就意思着在一个GroupTemplate中显示两个ItemTemplate2.

10、ItemTemplate中设置如下: .3.GroupTemplate设置如下: 4.LayoutTemplate设置如下: 完整代码如下:图10运行结果:图11(原创:灰灰虫的家http:/ class MyDBBF private MyDBDataContext _Context = new MyDBDataContext(); public List GetCars() return _Context.Car.OrderBy(p=p.Brand1.Prod_Code).ToList(); 第二步、添加分组头。我们可以在ItemTemplate中,在每次绑定数据行显示之前判断是否需要添加分组头。图16从上图中我们看到这样一段代码:这是我在aspx.cs中定义的一个方法,此方法决定分组头的显示。该方法的代码如下:图17这个方法在每行绑定的时候都会被调用到变量headerText代表上一行分组头的文字(即汽车厂商),变量currentHeader代表当前分组字段值,如果二者相等,说明这一行和上一行属于同一个分组,不需要加分组头,就返回空字符串。如果二者不等,说明这一行与上一行不属同一个分组,就添加一个表头。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号