用PagedDataSource实现分页

本文介绍了一种使用ASP.NET中的PagedDataSource组件实现DATALIST分页的方法,避免了使用ViewState保存分页信息的做法,提供了简洁高效的分页实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就分页的技术来看,无非是分两种:

一。通过存储过程来实现

     此点,暂时不讲,因为网上文章很多,迟一下再发表我的意见。

二。通过页面代码来实现

    我之前在网上看到一个文章,说的是为DATALIST分页,用的技术是viewstate保存分页信息,然后再通过这个信息(如当前是第几页,每页多少等)来实现分页。虽然能实现功能,不过,这一点明显是多此一举,究其原因,是由于没有深入认识。NET。其实。NET本身有一个PagedDataSource,它是从GridView里分离出来的分页代码封装,可以轻松实现分页。下面,就以DATALIST作为例子,看一下,他是怎样使用的:

=====================前台

<table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td width="100%" valign=top>
 <asp:DataGrid ID="dg1" AutoGenerateColumns="False" CellPadding="0" CellSpacing="0" PageSize="20"  runat="server"  Width="100%" AllowPaging="True" ><HeaderStyle Height="30px"  CssClass="topbg" HorizontalAlign="Center" /><ItemStyle BackColor="#F6F6F6" Height="25px" HorizontalAlign="Center" /><Columns><asp:TemplateColumn HeaderText="选   择"><ItemTemplate ><input id="YX_CH" name="YX_CH" type="checkbox" style="border:0 " value="<%# Eval("YX_ID") %>"  />    
                </ItemTemplate>
                      <HeaderStyle CssClass="B" />
             </asp:TemplateColumn>
              <asp:TemplateColumn HeaderText="I  D"><ItemTemplate ><%# Eval("YX_ID") %></ItemTemplate>
                      <HeaderStyle CssClass="B" /></asp:TemplateColumn>
         <asp:TemplateColumn HeaderText="品牌名称"><ItemTemplate ><%# Eval("YX_PinPaiName")%></ItemTemplate>
                      <HeaderStyle CssClass="B" /></asp:TemplateColumn>     
             <asp:TemplateColumn HeaderText="操  作"><ItemTemplate ><a href="YX_EditPinPai.aspx?YX_FS=Edit&YX_MID=<%#Eval("YX_ID")%>"><img src="../../images/icon_edit.gif" style="border:0" alt="编辑" /></a>
    <a href="?YX_FS=Del&YX_MID=<%#Eval("YX_ID")%>"><img src="../../images/no.gif" style="border:0" alt="删除" /></a>
                </ItemTemplate>
                  <HeaderStyle CssClass="B" />
             </asp:TemplateColumn>   
            </Columns>
    <PagerStyle Visible="False" />         
      </asp:DataGrid>      
      </td>
  </tr>
  <tr>
    <td valign=top> <table border="0" cellpadding="0" cellspacing="0" style="width: 100%">
            <tr bgcolor="#E7E7E7">
                <td align="center" bgcolor="#E7E7E7" style="width: 900px;color:#000000; height: 22px;">
                    <asp:Label ID="Label1" CssClass="font1" runat="server" Text="Label"></asp:Label><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>&nbsp;
                   <asp:HyperLink ID="start" runat="server" ForeColor="#000000">首 页</asp:HyperLink>&nbsp;
                    <asp:HyperLink ID="prev" runat="server" ForeColor="#000000"> 上一页</asp:HyperLink>&nbsp;
                      <asp:HyperLink ID="next" runat="server" ForeColor="#000000">下一页</asp:HyperLink>&nbsp;
                      <asp:HyperLink ID="max" runat="server" ForeColor="#000000">末 页</asp:HyperLink><span class="font1">转向</span>        
                    <asp:DropDownList ID="iPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="sic"></asp:DropDownList> <input id="chkall" type="checkbox" onClick="CheckAll(this.form)" style="border:0 " />全选</td>
              <td align="left" style="width: 50px; height: 22px;">
  </td><td align="left" bgcolor="#E7E7E7" style="width: 180px; height: 22px;">
            
                  </td>
                <td align="center" style="width: 50px; height: 22px;">
                </td>
            </tr>
        </table></td>
  </tr></table>

===============================后台

using System.Web.UI.WebControls; //命名空间

/// <summary>
    /// grid数据绑定
    /// </summary>
    private void bind()
    {
        try
        {

            Exsql.Open();
            string sql = "select * from YX_PinPai";
            ChangHope_DB Chp = new ChangHope_DB();
            DataSet ds = Chp.Db_ds(sql, "YX_PinPai");
            this.dg1.DataSource = datalistbind(ds); //分页数据绑定
            this.dg1.DataBind();
        }
        catch (Exception ee)
        {

            Response.Write(ee.Message);
        }
        finally
        {
            Exsql.Close();
        }
    }

/// <summary>
    /// 分页数据绑定
    /// </summary>
    /// <param name="dst"></param>
    /// <returns></returns>
    private PagedDataSource datalistbind(DataSet dst)
    {
        PagedDataSource objpage = new PagedDataSource();
        objpage.DataSource = dst.Tables[0].DefaultView;
        objpage.AllowPaging = true;
        //dg1.PageSize = 20;
        objpage.PageSize = 20;
        int CurPage;
        //判断是否有分页的请求
        ///
        if (Request["iPage"] != null)
        {
            CurPage = Convert.ToInt32(Request["iPage"]);
        }
        else
        {
            CurPage = 1;
        }
        //设置当前页;
        objpage.CurrentPageIndex = CurPage - 1;
        Label1.Text = "当前页:第" + CurPage.ToString() + "/" + objpage.PageCount + "页";
        Label2.Text = "共有" + objpage.DataSourceCount + "条记录 " + objpage.PageSize + "/页";
        //判断不是第一页的时候


        if (!objpage.IsFirstPage)
        {

            this.prev.NavigateUrl = Request.CurrentExecutionFilePath + "?iPage=" + (Convert.ToInt32(CurPage) - 1);
        }
        this.start.NavigateUrl = Request.CurrentExecutionFilePath + "?iPage=1";
        //判断不是最后一页的时候
        if (!objpage.IsLastPage)
        {
            this.next.NavigateUrl = Request.CurrentExecutionFilePath + "?ipage=" + (Convert.ToInt32(CurPage) + 1);
        }
        this.max.NavigateUrl = Request.CurrentExecutionFilePath + "?iPage=" + objpage.PageCount;
        if (!IsPostBack)
        {
            for (int i = 1; i < objpage.PageCount + 1; i++)
            {
                this.iPage.Items.Add(new ListItem(i.ToString() + "页", i.ToString()));
            }
        }
        return objpage;
    }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值