Asp.Net数据分页技术全功略(1)

 HTML页面代码:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageData.aspx.cs" Inherits="PageDatasource" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Repeater ID="Repeater1" runat="server">
           <ItemTemplate>
             <%# DataBinder.Eval(Container.DataItem,"XH") %>
             <%# DataBinder.Eval(Container.DataItem,"XM") %>
             <%# DataBinder.Eval(Container.DataItem,"XB") %>
             <%# DataBinder.Eval(Container.DataItem,"CSSJ") %>
             <%# DataBinder.Eval(Container.DataItem,"ZXF") %><br />
           </ItemTemplate>
           <AlternatingItemTemplate>
             <%# DataBinder.Eval(Container.DataItem,"XH") %>
             <%# DataBinder.Eval(Container.DataItem,"XM") %>
             <%# DataBinder.Eval(Container.DataItem,"XB") %>
             <%# DataBinder.Eval(Container.DataItem,"CSSJ") %>
             <%# DataBinder.Eval(Container.DataItem,"ZXF") %><br />
           </AlternatingItemTemplate>
           <HeaderTemplate>
               <hr />
           </HeaderTemplate>
           <FooterTemplate>
               <hr />
           </FooterTemplate>
           <SeparatorTemplate>
              <hr />
           </SeparatorTemplate>
        </asp:Repeater>
       
    </div>
    <asp:Button ID="top" runat="server" onclick="top_Click" Text="首页" />
    <asp:Button ID="next" runat="server" onclick="next_Click" Text="下一页" />
    <asp:Button ID="pre" runat="server" onclick="pre_Click" Text="上一页" />
    <asp:Button ID="bottom" runat="server" onclick="bottom_Click" Text="未页" />
    <span lang="zh-cn">共<asp:Label ID="Label1" runat="server"></asp:Label>
    页,当前是第<asp:Label ID="Label2" runat="server"></asp:Label>
    页</span></form>
</body>
</html>

后台代码如下:

 

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Configuration;
using System.Data.SqlClient;


public partial class PageDatasource : System.Web.UI.Page
{
    private static SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["xscjConnectionString"].ConnectionString);
    private const int PageSize = 3;
    private static int TotalPageCount = 0;
    private int RecordCount = 0;
    private int CurrentPageIndex=0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (ViewState["CurrentPageIndex"] != null)
        {
            this.CurrentPageIndex = Int32.Parse(ViewState["CurrentPageIndex"].ToString());
        }
        if (!this.IsPostBack)
        {
            this.Label2.Text = "1";
            this.GetTotalPageInfo();
            this.Label1.Text=TotalPageCount.ToString();
            this.CurrentPageIndex = 0;
            this.DataBindToReader();
        }
    }

    private void GetTotalPageInfo()
    {
        string sql = "select count(*) from xs";
        con.Open();
        SqlCommand cmd = new SqlCommand(sql,con);
        RecordCount = Convert.ToInt32(cmd.ExecuteScalar());
        con.Close();
        TotalPageCount = RecordCount / PageSize;
        if (TotalPageCount * PageSize < RecordCount)
        {
            TotalPageCount++;
        }
    }
    private void DataBindToReader()
    {
        this.Label2.Text = (this.CurrentPageIndex+1).ToString();
        DataSet ds = GetDataSet(this.CurrentPageIndex * PageSize, PageSize);
        System.Web.UI.WebControls.PagedDataSource ps = new PagedDataSource();
        ps.DataSource = ds.Tables[0].DefaultView;
        ps.AllowPaging = true;
        this.Repeater1.DataSource = ps;
        this.Repeater1.DataBind();
        this.FirstLastPage();
    }
    private void FirstLastPage()
    {
        if (TotalPageCount > 0)
        {
            if (this.CurrentPageIndex == 0)
            {
                this.top.Enabled = false;
                this.pre.Enabled = false;
                this.next.Enabled = true;
                this.bottom.Enabled = true;
            }
            if (this.CurrentPageIndex == TotalPageCount - 1)
            {
                this.top.Enabled = true;
                this.pre.Enabled = true;
                this.next.Enabled = false;
                this.bottom.Enabled = false;
            }
            if (this.CurrentPageIndex != 0 && this.CurrentPageIndex != TotalPageCount - 1)
            {
                this.top.Enabled = true;
                this.pre.Enabled = true;
                this.next.Enabled = true;
                this.bottom.Enabled = true;
            }
        }
    }
    private DataSet GetDataSet(int startIndex,int endIndex)
    {
        string sql = "select * from xs";
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter(sql,con);
        DataSet ds = new DataSet();
        da.Fill(ds,startIndex,endIndex,"xs");
        con.Close();
        return ds;
    }
    protected void top_Click(object sender, EventArgs e)
    {
        this.CurrentPageIndex = 0;
        ViewState["CurrentPageIndex"] = this.CurrentPageIndex.ToString();
        this.DataBindToReader();
    }
    protected void next_Click(object sender, EventArgs e)
    {
        this.CurrentPageIndex = (int)Math.Min(TotalPageCount - 1, this.CurrentPageIndex + 1);
        ViewState["CurrentPageIndex"] = this.CurrentPageIndex.ToString();
        this.DataBindToReader();
    }
    protected void pre_Click(object sender, EventArgs e)
    {
        this.CurrentPageIndex = (int)Math.Max(0, this.CurrentPageIndex - 1);
        ViewState["CurrentPageIndex"] = this.CurrentPageIndex.ToString();
        this.DataBindToReader();
    }
    protected void bottom_Click(object sender, EventArgs e)
    {
        this.CurrentPageIndex = TotalPageCount - 1;
        ViewState["CurrentPageIndex"] = this.CurrentPageIndex.ToString();
        this.DataBindToReader();
    }
}

posted on 2009-01-04 16:42  闫振创  阅读(380)  评论(0编辑  收藏  举报

导航