正在搞DataList的分页
存储过程啊!类封装啊!AspNetPager啊!
前些前在SQL区搞了存储过程的,这里是类封装的
和大家分享一下
大虾们请不要....呵呵

解决方案 »

  1.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageList.aspx.cs" Inherits="Controls_PageList" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><HTML>
    <HEAD>
    <title>产品分类页面</title>
            <link href="../App_Themes/1.css" rel="stylesheet" type="text/css" />
    </HEAD>
    <body style="MARGIN: 0px; TEXT-ALIGN: center" MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">

      <table border="0" cellpadding="0" cellspacing="0" width="500px">
              <tr>
                <td width="600px">
                     <asp:DataList ID="dlProduct" runat="server">
                    <ItemTemplate>
                        <table border="0" cellpadding="0" cellspacing="0" width="500px">
                            <tr>
                                <td colspan="5" width="400">
                              <a href='ProductDetail.aspx?id=<%# Eval("NewsID")%>'><%# Eval("NewsTitle")%></a>  
                                </td>
                                 <td colspan="5" width="100">
                               <%#DataBinder.Eval(Container.DataItem, "CreateTime","{0:yyyy-MM-dd}")%>
                                </td>
                            </tr>
                           
                        </table>
                    </ItemTemplate>
                    </asp:DataList>
               
                </td>
              </tr>    
             <TR>

    <TD style="HEIGHT: 23px" align="center"><asp:linkbutton id="lbtnOne" runat="server" OnClick="lbtnOne_Click">首页</asp:linkbutton>
                                                                <asp:linkbutton id="lbtnPre" runat="server" OnClick="lbtnPre_Click">上一页</asp:linkbutton>
                                                                <asp:linkbutton id="lbtnNext" runat="server" OnClick="lbtnNext_Click">下一页</asp:linkbutton>
                                                                <asp:linkbutton id="lbtnLast" runat="server" OnClick="lbtnLast_Click">最后一页</asp:linkbutton>
                                                                <asp:label id="lblCurrentPage" runat="server"></asp:label>
                                                                <asp:label id="lblPageCount" runat="server"></asp:label>到<asp:textbox id="txtCurrentPage" runat="server" Height="16px" Width="33px"></asp:textbox>页<asp:button id="btnGO" runat="server" Height="23px" Width="40px" CssClass="ButtonCss" Text="GO" OnClick="btnGO_Click"></asp:button></TD>

    </TR>
    </table>
    </form>
    </body>
    </HTML>
      

  2.   


    public partial class Controls_PageList : System.Web.UI.Page
    {
        PagedDataSource pds = new PagedDataSource();
        DataSet ds;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bind_load();            if (this.dlProduct.Items.Count <= 0)
                {
                    this.lblCurrentPage.Text = "无产品";
                    this.btnGO.Enabled = false;
                    this.lbtnOne.Enabled = false;
                    this.lbtnPre.Enabled = false;
                    this.lbtnLast.Enabled = false;
                    this.lbtnNext.Enabled = false;            }
                this.lbtnOne.Enabled = false;
                this.lbtnPre.Enabled = false;
            }
        }
        private void bind_load()
        {
            ds = News.GetAllNewsInfo();
            dlProduct.DataSource = ds;
            dlProduct.DataBind();
            //if (Request.QueryString["highSearch"] != null)
            //{
            //    ds = dlProduct.GetList(Request.QueryString["highSearch"].ToString());        //}
            //else
            //{
            //    ds = dlProduct.GetAllList();        //}
            #region 为产品列表dlProduct分页做准备
            ViewState["ds"] = ds;        pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4;
            int CurPage = 0;
            // ViewState["CurPage"]="0";
            if (ViewState["CurPage"] != null)
            {
                CurPage = int.Parse(ViewState["CurPage"].ToString());
            }
            else
            {
                ViewState["CurPage"] = "0";
                CurPage = 0;
            }        pds.CurrentPageIndex = CurPage;//当前页是从0开始算的.所以要-1
            this.lblCurrentPage.Text = "第1页";
            int pageCount = 0;
            if (ds.Tables[0].Rows.Count % pds.PageSize == 0)
            {
                pageCount = ds.Tables[0].Rows.Count / pds.PageSize;
            }
            else
            {
                pageCount = ds.Tables[0].Rows.Count / pds.PageSize + 1;
            }
            ViewState["pageCount"] = pageCount;
            this.lblPageCount.Text = "共" + pageCount.ToString() + "页";
            this.dlProduct.DataSource = pds;
            dlProduct.DataKeyField = "NewsID";
            this.dlProduct.DataBind();        #endregion
            ViewState["ds"] = ds;
        }
        public void PageChange()
        {
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 10;
            int CurPage = 0;
            ViewState["CurPage"] = "0";
            if (ViewState["CurPage"] != null)
            {
                CurPage = int.Parse(ViewState["CurPage"].ToString());
            }
            else
            {
                ViewState["CurPage"] = "0";
                CurPage = 0;
            }        pds.CurrentPageIndex = CurPage;//当前页是从0开始算的.所以要-1
            this.lblCurrentPage.Text = "第1页";
            int pageCount = 0;
            if (ds.Tables[0].Rows.Count % pds.PageSize == 0)
            {
                pageCount = ds.Tables[0].Rows.Count / pds.PageSize;
            }
            else
            {
                pageCount = ds.Tables[0].Rows.Count / pds.PageSize + 1;
            }
            ViewState["pageCount"] = pageCount;
            this.lblPageCount.Text = "共" + pageCount.ToString() + "页";
            this.dlProduct.DataSource = pds;
            dlProduct.DataKeyField = "NewsID";
            this.dlProduct.DataBind();        if (ds.Tables[0].Rows.Count == 0)
            {
                lblCurrentPage.Text = "";
                this.lbtnOne.Enabled = false;
                this.lbtnPre.Enabled = false;
                this.lbtnLast.Enabled = false;
                this.lbtnNext.Enabled = false;
                this.txtCurrentPage.Enabled = false;
                this.btnGO.Enabled = false;
            }
            else
            {
                this.lbtnOne.Enabled = true;
                this.lbtnPre.Enabled = true;
                this.lbtnLast.Enabled = true;
                this.lbtnNext.Enabled = true;
                this.txtCurrentPage.Enabled = true;
                this.btnGO.Enabled = true;
            }
            //iframe自适应所加载页面大小
            Response.Write("<script>parent.document.getElementById('iframeGO').style.height=document.body.scrollHeight;</script>");
        }
        protected void lbtnOne_Click(object sender, EventArgs e)
        {        BindPage(0);
            ViewState["CurPage"] = "0";
            this.lblCurrentPage.Text = "第1页";
            if (this.lblCurrentPage.Text == "第1页")
            {
                this.lbtnPre.Enabled = false;
                this.lbtnOne.Enabled = false;
            }
            else
            {
                this.lbtnPre.Enabled = true;
                this.lbtnOne.Enabled = true;
            }
            if (this.lblCurrentPage.Text == "第" + ViewState["pageCount"].ToString() + "页")
            {
                this.lbtnLast.Enabled = false;
                this.lbtnNext.Enabled = false;
            }
            else
            {
                this.lbtnLast.Enabled = true;
                this.lbtnNext.Enabled = true;
            }
        }
        protected void lbtnPre_Click(object sender, EventArgs e)
        {
            ds = (DataSet)ViewState["ds"];
            //PageDataSource 是vs提供的分页控件 .可以直接使用
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4;        int CurPage = int.Parse(ViewState["CurPage"].ToString());
            if (ViewState["CurPage"].ToString() == "0")
            {
                //Jscript.AlertAndRedirect(this, "已是首页!");//当前页是从0开始算的.所以要-1
                //return;
            }
            else
            {
                pds.CurrentPageIndex = int.Parse(ViewState["CurPage"].ToString()) - 1;
                CurPage--;
            }
            this.dlProduct.DataSource = pds;
            dlProduct.DataKeyField = "NewsID";
            this.dlProduct.DataBind();        ViewState["CurPage"] = CurPage;
            this.lblCurrentPage.Text = "第" + (int.Parse(ViewState["CurPage"].ToString()) + 1).ToString() + "页";
            if (this.lblCurrentPage.Text == "第1页")
            {
                this.lbtnPre.Enabled = false;
                this.lbtnOne.Enabled = false;
            }
            else
            {
                this.lbtnPre.Enabled = true;
                this.lbtnOne.Enabled = true;
            }
            if (this.lblCurrentPage.Text == "第" + ViewState["pageCount"].ToString() + "页")
            {
                this.lbtnLast.Enabled = false;
                this.lbtnNext.Enabled = false;
            }
            else
            {
                this.lbtnLast.Enabled = true;
                this.lbtnNext.Enabled = true;
            }
        }
       }
      

  3.   

     protected void lbtnNext_Click(object sender, EventArgs e)
        {
            ds = (DataSet)ViewState["ds"];
            //PageDataSource 是vs提供的分页控件 .可以直接使用
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4;
            int CurPage = int.Parse(ViewState["CurPage"].ToString());
            if (CurPage == int.Parse(ViewState["pageCount"].ToString()) - 1)
            {
                //MessageBox.Show(this, "已达末页");
                //return;
            }
            else
            {
                pds.CurrentPageIndex = int.Parse(ViewState["CurPage"].ToString()) + 1;
                CurPage++;
            }
            this.dlProduct.DataSource = pds;
            dlProduct.DataKeyField = "NewsID";
            this.dlProduct.DataBind();
            ViewState["CurPage"] = CurPage;
            this.lblCurrentPage.Text = "第" + (int.Parse(ViewState["CurPage"].ToString()) + 1).ToString() + "页";
            if (this.lblCurrentPage.Text == "第1页")
            {
                this.lbtnPre.Enabled = false;
                this.lbtnOne.Enabled = false;
            }
            else
            {
                this.lbtnPre.Enabled = true;
                this.lbtnOne.Enabled = true;
            }
            if (this.lblCurrentPage.Text == "第" + ViewState["pageCount"].ToString() + "页")
            {
                this.lbtnLast.Enabled = false;
                this.lbtnNext.Enabled = false;
            }
            else
            {
                this.lbtnLast.Enabled = true;
                this.lbtnNext.Enabled = true;
            }
        }
        protected void lbtnLast_Click(object sender, EventArgs e)
        {
            BindPage(int.Parse(ViewState["pageCount"].ToString()) - 1);
            ViewState["CurPage"] = (int.Parse(ViewState["pageCount"].ToString()) - 1).ToString();        this.lblCurrentPage.Text = "第" + ViewState["pageCount"].ToString() + "页";
            if (this.lblCurrentPage.Text == "第1页")
            {
                this.lbtnPre.Enabled = false;
                this.lbtnOne.Enabled = false;
            }
            else
            {
                this.lbtnPre.Enabled = true;
                this.lbtnOne.Enabled = true;
            }
            if (this.lblCurrentPage.Text == "第" + ViewState["pageCount"].ToString() + "页")
            {
                this.lbtnLast.Enabled = false;
                this.lbtnNext.Enabled = false;
            }
            else
            {
                this.lbtnLast.Enabled = true;
                this.lbtnNext.Enabled = true;
            }
        }
        protected void btnGO_Click(object sender, EventArgs e)
        {
            if (this.txtCurrentPage.Text == string.Empty)
            {
                //MessageBox.Show(this, "请输入页码!");
                //MessageBox.Show(this, "请输入页码!");
            }
            else
            {
                if (int.Parse(this.txtCurrentPage.Text) > 0 && int.Parse(this.txtCurrentPage.Text) <= int.Parse(ViewState["pageCount"].ToString()))
                {
                    BindPage(int.Parse(this.txtCurrentPage.Text) - 1);
                }
                else
                {
                    //MessageBox.Show(this, "不存在此页!");
                    //MessageBox.Show(this, "不存在此页!");
                }
                if (int.Parse(this.txtCurrentPage.Text) == 1 && int.Parse(ViewState["pageCount"].ToString()) > 1)
                {
                    this.lbtnOne.Enabled = false;
                    this.lbtnPre.Enabled = false;
                    this.lbtnLast.Enabled = true;
                    this.lbtnNext.Enabled = true;
                }
                if (int.Parse(this.txtCurrentPage.Text) == int.Parse(ViewState["pageCount"].ToString()) && int.Parse(ViewState["pageCount"].ToString()) > 1)
                {
                    this.lbtnLast.Enabled = false;
                    this.lbtnNext.Enabled = false;
                    this.lbtnOne.Enabled = true;
                    this.lbtnPre.Enabled = true;
                }
            }
        }
        protected void BindPage(int iPageIndex)
        {
            //绑定产品
            DataSet ds = new DataSet();
            ds = (DataSet)ViewState["ds"];
            //PageDataSource 是vs提供的分页控件 .可以直接使用
            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = ds.Tables[0].DefaultView;
            pds.AllowPaging = true;
            pds.PageSize = 4;
            pds.CurrentPageIndex = iPageIndex;//当前页是从0开始算的.所以要-1        this.lblCurrentPage.Text = "第" + (iPageIndex + 1).ToString() + "页";
            this.dlProduct.DataSource = pds;
            dlProduct.DataKeyField = "NewsID";
            this.dlProduct.DataBind();        ViewState["CurPage"] = iPageIndex.ToString();
            //Response.Write("<script>parent.document.getElementById('iframeGO').style.height=document.body.scrollHeight;</script>");    }