ASP.NET 3.5中的ListView控件和DataPager控件(一)
介绍
今天,我花了几个小时的时间研究了一下ASP.NET 3.5中的ListView控件和DataPager控件。 这两个控件是ASP.NET中新增的、非常受欢迎的控件。 ListView控件集成了DataGrid、DataList、Repeater和GridView控件的所有功能。它可以像Repeater控件那样,让我们在控件内写任何HTML代码。
可以说,ListView就是DataGrid和 Repeater的结合体,它既有Repeater控件的开放式模板,又具有DataGrid控件的编辑特性。 这绝对是一个可以引起你兴趣的好东东,因为它给你提供了比DataGird丰富得多的布局手段,同时又具有DataGrid的所有特性。 ListView控件本身并不提供分页功能,但是我们可以通过另一个控件 – DataPager来实现分页的特性。 把分页的特性单独放到另一个控件里,会给我们带来很多好处,比如说可以让别的控件使用它,又比如说我们可以把它放在页面的任何地方。实质上,DataPager就是一个扩展ListView分页功能的控件。
ListView控件
ListView是用来显示数据的,它的使用类似于Repeater控件。 ListView控件中有n多模板,出示如下:
·LayoutTemplate
·ItemTemplate
·AlternatingItemTemplate
·SelectedItemTemplate
·EmptyItemTemplate
·EmptyDataTemplate
·ItemSeparatorTemplate
·GroupTemplate
·GroupSeparatorTemplate
·EditItemTemplate
·InsertItemTemplate
它 有很多的模板。 其中有许多新增的模板,如GroupTemplate和InsertItemTemplate。 现在我们可能还无法了解GroupTemplate是如何工作的(后面会有介绍),但是对于InsertItemTemplate来说,一看就知道它是用 于添加记录的(在之前的DataGird中是没有这个模板的)。
继续摸索这个控件后,我发现它可以让你在它的模板内写任何HTML标记或控件,这将给我们带来很大的自由度。
用ListView显示数据
开始,你可以把ListView当作是Repeater来使用,也就是说它是模板驱动型的控件,其中的LayoutTemplate是ListView的一个布局模板。 参考如下示例:
<asp:ListView ID="lvItems" runat="server"
DataSourceID="Data"
ItemContainerID="layoutTemplate"
DataKeyNames="Pk"
>
<Layouttemplate>
<div id="layoutTemplate" runat="server" />
</Layouttemplate>
<ItemTemplate>
<div class="itemdisplay">
<b><% # Eval("Sku") %></b><br />
<% # Eval("Abstract") %></div>
</ItemTemplate>
</asp:ListView>
LayoutTemplate用来决定包裹着详细内容的容器的标记。 你可以在布局模板内放置任何控件,不过它必须要是服务端控件(runat=”server”)。 另外,你还需要指定ListView控件的ItemContainerID属性,它用来告知ListView在哪个容器下显示详细内容。在上面的例子中,LayoutTemplate其实并没有起到什么作用,因为它只是将ListView显示的详细内容放到了一个<div />标记下而已。但是,我们也可以用它来显示复杂的布局,如<table />。 请看下面的例子,它就是用<table />来做ListView显示的详细内容的容器的,并且它还有一个固定表头的功能。
<asp:ListView ID="lvItemsTable" runat="server"
DataSourceID="Data"
ItemContainerID="layoutTableTemplate"
DataKeyNames="Pk"
>
<LayoutTemplate>
<div class="blackborder" style="overflow-y:auto;height:500px;width:800px;">
<table cellpadding="5" >
<thead style="position:relative;">
<tr class="gridheader" style="height:30px;">
<th style="position:relative">Sku</th><th style="position:relative">Abstract</th>
</tr>
</thead>
<tbody id="layoutTableTemplate" runat="server"
style="height:470px;overflow:scroll;overflow-x:hidden;"></tbody>
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr style="height:0px;">
<td valign="top"><% # Eval("Sku") %> </td>
<td valign="top"><% # Eval("Abstract") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
请注意一下上面的布局模板,特别是其中的<TBODY />部分。 ItemTemplate会将其内生成的详细内容插入到<TBODY />之中。
增加分页功能
如 果你想为ListView增加分页功能的话,那么就需要使用DataPager控件了。这个分页控件是一个独立的控件,你可以把它放到页面的任何位置,然后使其联到你的ListView控件就可以完成分页的工作了。该分页控件所呈现出来的HTML标记为内联(Inline)元素,所以如果你想精确地设置其位置的话,可以参考下面的代码,为其包裹一个<div />标记。
你可以像下面这样设置分页控件,并可以把其放到页面的任何位置。
<div class="blockheader" style="padding:10px;text-align: right;">
<asp:DataPager ID="Pager" runat="server"
PagedControlID="lvItems" PageSize="5" >
<Fields>
<asp:numericpagerfield ButtonCount="10" NextPageText=" "
PreviousPageText=" " />
<asp:nextpreviouspagerfield FirstPageText="First" LastPageText="Last"
NextPageText="Next" PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
</div>
通过上面的代码你会发现,我们可以通过设置DataPager控件的Fields,从而达到手动设置分页布局的目的。 另外还有一个关键点,就是DataPager控件的PagedControlID属性,你需要把它设置为ListView的ID。
当然你也可以把DataPager控件放到布局模板内。
把 分页功能作为一个单独的控件分离出来是一个非常好的注意 – 它会让我们有更多的布局和 显示上的自由度。但是,目前的分页控件还是有其局限性的。 它只能结合ListView控件一起工作 – 如果能用在Repeater或GridView上就更好了。另外,它也是要依赖于ViewState的。
还有,现在的DataPager控件没有分页事件,也没有SelectedPageIndex属性。
还有一点需要注意的是,ListView没有内置排序功能。
ASP.NET 3.5中的ListView控件和DataPager控件(一)相关推荐
- 【转贴】ASP.NET 3.5中的ListView控件和DataPager控件
作者:Rick Strahl 翻译:webabcd 原文地址:http://www.west-wind.com/WebLog/posts/127340.aspx 译文地址:http://www.cn ...
- 在.net3.5中使用ListView控件和DataPager控件笔记
演练:使用 ListView Web 服务器控件修改数据 演练:使用 ListView Web 服务器控件对数据进行显示.分页和排序 DataPager 控件 注意DataPager控件只能和List ...
- ASP.NET 3.5中的ListView控件和DataPager控件(二)
在ListView中添加和编辑数据 ListView通过EditItemTemplate和InsertItemTemplate来提供编辑数据和添加数据的功能.这个功能的使用非常类似于GridView的 ...
- 【初学者指南】在ASP.NET MVC 5中创建GridView
介绍 在这篇文章中,我们将会学习如何在 ASP.NET MVC 中创建一个 gridview,就像 ASP.NET Web 表单中的 gridview 一样.服务器端和客户端有许多可用的第三方库,这些 ...
- ASP.NET 2.0中使用自定义provider (2)
ASP.NET 2.0中使用自定义provider (2) 在tech ed 2005上,有对asp.net 2.0的介绍,其中讲到asp.net 2.0提供了很多功能,让程序员做少很多东西,这引起了 ...
- 【转】 ASP.NET 3.5中使用新的ListView控件
ASP.NET中新的ListView控件为显示和CURD数据库操作提供了基于模板的布局,使之成为一项极好的方式,建立以数据为中心的Web应用程序. 当你编写以用户为中心的应用程序时,总需要某种形式的数 ...
- 在ASP.NET 3.5中使用新的ListView控件(3)
在清单1中,SqlDataSource通过设置ConnectionString 和SelectCommand 属性控制从AdventureWorks数据库的Product表中检索数据,Connecti ...
- 在ASP.NET 3.5中使用新的ListView控件(6)
值 描述 Cancel 取消当前操作 Delete 从数据源删除当前选中的项目 Edit 切换ListView到编辑模式,显示EditItemTemplate组件中指定的内容 Insert 作为一条新 ...
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之十三:在DetailsView控件中使用TemplateField...
导言 比起BoundField.CheckBoxField.HyperLinkField以及其他的那些数据字段控件(data field controls)来说,TemplateField提供了一种高 ...
最新文章
- 查看chrome驱动以及下载对应谷歌浏览器版本
- android获取状态栏截屏按钮状态,关于代码截屏带状态栏的问题
- Informix IDS 11体系打点(918考试)认证指南,第 5 局部: 数据库管事器操作(4)
- 推荐一个golang的json库
- Bootstrap组件_媒体对象,列表组
- java简易日历程序报告_简单的日历小程序(java编写)
- java矩形翻转_如何判断一个点在旋转后的矩形中
- nohup命令导致nohup.out文件过大处理办法
- C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示
- java——题型和考点大纲
- activitymq 登录界面地址
- cl.nd77.pw index.php,Loop in template
- prayaya v3-国产神操作系统
- 使用 Python 合并地图瓦片
- yyyy/MM/dd转换成yyyy-MM-dd,yyyy-MM-dd转换成yyyy/MM/dd你会了吗
- 基于立体视觉的三维模型重建系统设计
- UR机器人PolyScope使用入门教程
- 服务器有必要更新主板芯片组吗,芯片组驱动要不要更新_芯片组驱动卸载了会怎么样...
- 学习记录-钓鱼网站总结
- 谈一下我是如何从使用json-lib到投入fastjson的怀抱....