用PagedDataSource实现分页

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

一。通过存储过程来实现

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

二。通过页面代码来实现

    我之前在网上看到一个文章,说的是为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;
    }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
下面是一个基于ASP.NET的使用DataList控件,并且借助PagedDataSource实现分页查询学生信息的示例代码: 1. 首先,我们需要创建一个学生信息表的数据库。以下是一个示例的创建代码: ```sql CREATE TABLE Students ( Id INT PRIMARY KEY, Name VARCHAR(50), Age INT, Gender VARCHAR(10), Major VARCHAR(50) ); ``` 2. 然后,我们需要在ASP.NET的页面中添加一个DataList控件,用来显示学生信息。以下是一个示例的DataList控件代码: ```html <asp:DataList ID="dlStudents" runat="server" RepeatLayout="Table" RepeatColumns="5"> <ItemTemplate> <tr> <td><%#Eval("Id")%></td> <td><%#Eval("Name")%></td> <td><%#Eval("Age")%></td> <td><%#Eval("Gender")%></td> <td><%#Eval("Major")%></td> </tr> </ItemTemplate> </asp:DataList> ``` 3. 接下来,我们需要在页面的代码后台中,编写查询学生信息并进行分页的代码。以下是示例的后台代码: ```csharp protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindData(); } } private void BindData() { // 查询所有学生信息 string connectionString = "Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("SELECT * FROM Students", connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable table = new DataTable(); adapter.Fill(table); // 分页查询学生信息 PagedDataSource pds = new PagedDataSource(); pds.DataSource = table.DefaultView; pds.AllowPaging = true; pds.PageSize = 10; int currentPage = 0; if (Request.QueryString["page"] != null) { currentPage = int.Parse(Request.QueryString["page"]); } else { currentPage = 1; } pds.CurrentPageIndex = currentPage - 1; dlStudents.DataSource = pds; dlStudents.DataBind(); // 显示分页导航 int pageCount = pds.PageCount; for (int i = 1; i <= pageCount; i++) { HyperLink link = new HyperLink(); link.Text = i.ToString(); link.NavigateUrl = "Default.aspx?page=" + i.ToString(); if (i == currentPage) { link.Font.Bold = true; } Panel1.Controls.Add(link); Panel1.Controls.Add(new LiteralControl(" ")); } } } ``` 在这段代码中,我们首先查询所有的学生信息,并将其保存在一个DataTable中。然后,我们使用PagedDataSource类对DataTable进行分页,并将分页后的结果绑定到DataList控件上。最后,我们根据分页的结果,生成分页导航的HTML代码,并添加到页面上。 这就是一个基于ASP.NET的使用DataList控件,并且借助PagedDataSource实现分页查询学生信息的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值