使用ListView控件和DataPager实现数据分页显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用ListView数据绑定控件和DataPager实现数据分页显示
为什么使用ListView+DataPager的方式实现分页显示?
提供的诸多数据绑定控件,每一种都有它自己的优点和缺点。
如果需要对数据进行操作,如果数据量不大的情况下,DataList和GridView是最好的选择,但是他们会生产额外的<table><tr><tbody><td>标签。
如果只是罗列出来一些简单的数据,出于对性能的考虑,repeater必然是首选。
当然ListView和DataPager的组合必将是开发中的黄金组合,无论从性能上和功能实现上都是很棒的控件。
扩展性强,灵活度高:ListView控件集成了DataGrid、DataList、Repeater和GridView 控件的所有功能。
它可以像Repeater控件那样,让我们在控件内写任何HTML代码。
.NET 中给我们提供的新数据绑定控件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没有内置排序功能。