ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示
为什么使用ListView+DataPager的方式实现分页显示?
.net提供的诸多数据绑定控件,每一种都有它自己的优点和缺点。如果需要对数据进行操作,如果数据量不大的情况下,DataList和GridView是最好的选择,但是他们会生产额外的<table><tr><tbody><td>标签。如果只是罗列出来一些简单的数据,出于对性能的考虑,repeater必然是首选。当然ListView和DataPager的组合必将是开发中的黄金组合,无论从性能上和功能实现上都是很棒的控件。扩展性强,灵活度高:ListView控件集成了DataGrid、DataList、Repeater和GridView控件的所有功能。它可以像Repeater控件那样,让我们在控件内写任何HTML代码。
.NET 3.5中给我们提供的新数据绑定控件ListView和DataPager,可以说,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。但我一般常用的就是 ItemTemplate,AlternatingItemTemplate ,EditItemTemplate ,InsertItemTemplate这几个。
继续摸索这个控件后,我发现它可以让你在它的模板内写任何HTML标记或控件,这将给我们带来很大的*度。
用ListView显示数据
开始,你可以把ListView当作是Repeater来使用,也就是说它是模板驱动型的控件。 参考如下示例:
<asp:ListView ID="lv2" runat="server" onpagepropertieschanging="lv_PagePropertiesChanging2" onitemcanceling="lv2_ItemCanceling" onitemediting="lv2_ItemEditing" onitemupdating="lv2_ItemUpdating" onitemdeleting="lv2_ItemDeleting" DataKeyNames="id"> <EditItemTemplate> <div class="lvData"> <div class="id"><%#eval_r("id")%></div> <div class="proId"><%#eval_r("provinceID")%></div> <div class="proName"> <asp:TextBox ID="txt" runat="server" Text='<%#eval_r("province")%>'></asp:TextBox></div> <div class="edit"> <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Update" >更新</asp:LinkButton> <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Cancel" >取消</asp:LinkButton> </div> </div> </EditItemTemplate> <ItemTemplate> <div class="lvData"> <div class="id"><%#eval_r("id")%></div> <div class="proId"><%#eval_r("provinceID")%></div> <div class="proName"><%#eval_r("province")%></div> <div class="edit"> <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" >编辑</asp:LinkButton> <asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" >删除</asp:LinkButton> </div> </div> </ItemTemplate> <AlternatingItemTemplate> <div class="lvData alterStyle"> <div class="id"><%#eval_r("id")%></div> <div class="proId"><%#eval_r("provinceID")%></div> <div class="proName"><%#eval_r("province")%></div> <div class="edit"> <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="Edit" >编辑</asp:LinkButton> <asp:LinkButton ID="LinkButton3" runat="server" CommandName="Delete" >删除</asp:LinkButton> </div> </div> </AlternatingItemTemplate> </asp:ListView>
增加分页功能
如 果你想为ListView增加分页功能的话,那么就需要使用DataPager控件了。这个分页控件是一个独立的控件,你可以把它放到页面的任何位置,然后使其联到你的ListView控件就可以完成分页的工作了。该分页控件所呈现出来的HTML标记为内联(Inline)元素,所以如果你想精确地设置其位置的话,可以参考下面的代码,为其包裹一个<div />标记。
给ListView控件添加以下属性,在翻页时给控件绑定新的页面索引:
onpagepropertieschanging="lv_PagePropertiesChanging2"
你可以像下面这样设置分页控件,并可以把其放到页面的任何位置。
<asp:DataPager ID="DataPager2" PagedControlID="lv2" runat="server">
<Fields>
<asp:NextPreviousPagerField ShowFirstPageButton="True"
ShowLastPageButton="True" ShowNextPageButton="True"
ShowPreviousPageButton="True" />
</Fields>
</asp:DataPager>
通过上面的代码你会发现,我们可以通过设置DataPager控件的Fields,从而达到手动设置分页布局的目的。 另外还有一个关键点,就是DataPager控件的PagedControlID属性,你需要把它设置为ListView的ID。
当然你也可以把DataPager控件放到布局模板内。
把 分页功能作为一个单独的控件分离出来是一个非常好的注意 – 它会让我们有更多的布局和 显示上的*度。但是,目前的分页控件还是有其局限性的。 它只能结合ListView控件一起工作 – 如果能用在Repeater或GridView上就更好了。另外,它也是要依赖于ViewState的。
还有,现在的DataPager控件没有分页事件,也没有SelectedPageIndex属性。
还有一点需要注意的是,ListView没有内置排序功能。
《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>的更多相关文章
-
《ASP.NET1200例》实现投票的用户控件
用户控件ascx <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="24 ...
-
《ASP.NET1200例》ListView 控件与DataPager控件的结合<;一>;
分页 在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...
-
《ASP.NET1200例》ListView控件之修改,删除与添加
aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...
-
《ASP.NET1200例》各种类型文件汇总
aspx是页面文件 ascx是用户控件,用户控件必须嵌入到aspx中才能使用. ascx是用户控件,相当于模板 其实ascx你可以理解为Html里的一部分代码, 只是嵌到aspx里而已, 因为aspx ...
-
《ASP.NET1200例》解决母版页报错“内容控件必须是内容页中的*控件,或是引用母版页的嵌套母版页。”
VS2005下,添加了母版页这个控件,我们可以讲N个页面*同的部分放在母版页来实现,并让WEB窗体集成自我们的母版页,就可以让我们的站点具有统一的风格了.在VS2005SP1之前的版本中,我们只能创 ...
-
《ASP.NET1200例》嵌套在DataLisT控件中的其他服务器控件---DropDownList控件的数据绑定
aspx <script type="text/javascript"> function CheckAll(Obj) { var AllObj = document. ...
-
《ASP.NET1200例》高亮显示ListView中的数据行并自动切换图片
aspx <script type="text/javascript"> var oldColor; function SetNewColor(Source) { ol ...
-
《ASP.NET1200例》在DataList里编辑和删除数据
学习内容:如何创建一个支持编辑和删除数据的DataList.增加编辑和删除功能需要在DataList的ItemTemplate和EditItemTemplate里增加合适的控件,创建对应的事件处理,读 ...
-
《ASP.NET1200例》<;asp:DataList>;分页显示图片
aspx页面代码 <asp:DataList ID="dlPhoto" runat="server" Height="137px" W ...
随机推荐
-
基于SuperSocket的IIS主动推送消息给android客户端
在上一篇文章<基于mina框架的GPS设备与服务器之间的交互>中,提到之前一直使用superwebsocket框架做为IIS和APP通信的媒介,经常出现无法通信的问题,必须一天几次的手动回 ...
-
sprint3(第九天)
今天四六级考试,没做什么内容,添加了前台的菜单的图片 燃尽图
-
java.lang.Thread.State类详解
public static enum Thread.Stateextends Enum<Thread.State>线程状态.线程可以处于下列状态之一: 1.NEW 至今尚未启动的线程的状态 ...
-
磁盘缓存--YYCache 设计思路
为了设计一个比较好的磁盘缓存,我调查了大量的开源库,包括 TMDiskCache.PINDiskCache.SDWebImage.FastImageCache 等,也调查了一些闭源的实现,包括 NSU ...
-
java 线程(四)线程安全 同步方法
package cn.sasa.demo2; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...
-
stenciljs 学习十二 官方doc 路由使用的例子
路由在单页面应用开发中是一个相对比较重要的位置 以下为官方网站的路由配置 <stencil-router scrollTopOffset={0}> <stencil-route-sw ...
-
[翻译] HTKDynamicResizingCell
HTKDynamicResizingCell https://github.com/henrytkirk/HTKDynamicResizingCell Subclassed UITableView/U ...
-
paperfree
主题:免费的论文查重网站 正文:给大家推荐一个免费的论文查重网站PaperFree:http://www.paperfree.cn
-
ABAP正则表达式 vs SPLIT INTO
需求: 把如下通过"/"连接起来的三个字符串分别解析出来. 传统的做法见下图第98行的function module SKWF_UTIL_IO_FIND_BY_KEY: 这个fun ...
-
POJ2976(最大化平均值)
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9329 Accepted: 3271 De ...