《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>

时间:2022-12-30 21:41:50

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控件的结合<二>的更多相关文章

  1. 《ASP&period;NET1200例》实现投票的用户控件

    用户控件ascx <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="24 ...

  2. 《ASP&period;NET1200例》ListView 控件与DataPager控件的结合&lt&semi;一&gt&semi;

    分页     在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...

  3. 《ASP&period;NET1200例》ListView控件之修改,删除与添加

    aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...

  4. 《ASP&period;NET1200例》各种类型文件汇总

    aspx是页面文件 ascx是用户控件,用户控件必须嵌入到aspx中才能使用. ascx是用户控件,相当于模板 其实ascx你可以理解为Html里的一部分代码, 只是嵌到aspx里而已, 因为aspx ...

  5. 《ASP&period;NET1200例》解决母版页报错&OpenCurlyDoubleQuote;内容控件必须是内容页中的*控件,或是引用母版页的嵌套母版页。”

    VS2005下,添加了母版页这个控件,我们可以讲N个页面*同的部分放在母版页来实现,并让WEB窗体集成自我们的母版页,就可以让我们的站点具有统一的风格了.在VS2005SP1之前的版本中,我们只能创 ...

  6. 《ASP&period;NET1200例》嵌套在DataLisT控件中的其他服务器控件---DropDownList控件的数据绑定

    aspx <script type="text/javascript"> function CheckAll(Obj) { var AllObj = document. ...

  7. 《ASP&period;NET1200例》高亮显示ListView中的数据行并自动切换图片

    aspx <script type="text/javascript"> var oldColor; function SetNewColor(Source) { ol ...

  8. 《ASP&period;NET1200例》在DataList里编辑和删除数据

    学习内容:如何创建一个支持编辑和删除数据的DataList.增加编辑和删除功能需要在DataList的ItemTemplate和EditItemTemplate里增加合适的控件,创建对应的事件处理,读 ...

  9. 《ASP&period;NET1200例》&lt&semi;asp&colon;DataList&gt&semi;分页显示图片

    aspx页面代码 <asp:DataList ID="dlPhoto" runat="server" Height="137px" W ...

随机推荐

  1. 基于SuperSocket的IIS主动推送消息给android客户端

    在上一篇文章<基于mina框架的GPS设备与服务器之间的交互>中,提到之前一直使用superwebsocket框架做为IIS和APP通信的媒介,经常出现无法通信的问题,必须一天几次的手动回 ...

  2. sprint3(第九天)

    今天四六级考试,没做什么内容,添加了前台的菜单的图片 燃尽图

  3. java&period;lang&period;Thread&period;State类详解

    public static enum Thread.Stateextends Enum<Thread.State>线程状态.线程可以处于下列状态之一: 1.NEW 至今尚未启动的线程的状态 ...

  4. 磁盘缓存--YYCache 设计思路

    为了设计一个比较好的磁盘缓存,我调查了大量的开源库,包括 TMDiskCache.PINDiskCache.SDWebImage.FastImageCache 等,也调查了一些闭源的实现,包括 NSU ...

  5. java 线程(四)线程安全 同步方法

    package cn.sasa.demo2; import java.util.concurrent.ExecutionException; public class ThreadDemo { pub ...

  6. stenciljs 学习十二 官方doc 路由使用的例子

    路由在单页面应用开发中是一个相对比较重要的位置 以下为官方网站的路由配置 <stencil-router scrollTopOffset={0}> <stencil-route-sw ...

  7. &lbrack;翻译&rsqb; HTKDynamicResizingCell

    HTKDynamicResizingCell https://github.com/henrytkirk/HTKDynamicResizingCell Subclassed UITableView/U ...

  8. paperfree

    主题:免费的论文查重网站 正文:给大家推荐一个免费的论文查重网站PaperFree:http://www.paperfree.cn

  9. ABAP正则表达式 vs SPLIT INTO

    需求: 把如下通过"/"连接起来的三个字符串分别解析出来. 传统的做法见下图第98行的function module SKWF_UTIL_IO_FIND_BY_KEY: 这个fun ...

  10. POJ2976&lpar;最大化平均值&rpar;

    Dropping tests Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9329   Accepted: 3271 De ...