我所接触的分页方法是.net的控件分页,用ListView+DataPager或者GridView自带的分页,还有就是存储过程分页,各有优劣控件比较省事,但是灵活性不强,存储过程分页的话,可以展现各中形式,不过代码量不少。或者还有其他的分页方法我想问下,眼下最主流,最时髦,最常用的分页方法是什么呢?

解决方案 »

  1.   

    分页存储过程使用比较多,还有自定义分页控件如aspnetpager.
    简单些使用控件的自定义分页如gridview,reapter.
    还有datapager.
      

  2.   

    数据量非常大的情况下 使用存储过程分页,或使用gridview自带的分页也成 不过数据量大的时候就比较慢
      

  3.   

    用存储过程,aspnetpager,相当方便
      

  4.   

    请参考这篇非常好的文章http://www.codeproject.com/KB/custom-controls/ASPNETPagerControl.aspx,并可下载Sample Code。
      

  5.   

    如果简单的情况,如数据量不大的,且数据增加的速度小的,一般就用gridview自带的,省事
    如果数据量大,则用存储过程分页
      

  6.   

    本人认为最好还是用存储过程实现,然后自定义一个用户分页控件。使用时直接引用即可。本人最近写了一个一个,代码如下,希望有所帮助。控件表现代码:
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="AspPage.ascx.cs" Inherits="AspPage" %>
    <asp:Button ID="btnFirst" runat="server" Text="第一页"  cssclass="ButtonCss" OnClick="btnFirst_Click" />
    <asp:Button ID="btnBack" runat="server" Text="上一页"  cssclass="ButtonCss" OnClick="btnBack_Click" />
    <asp:Button ID="btnNext" runat="server" Text="下一页" cssclass="ButtonCss" OnClick="btnNext_Click" />
    <asp:Button ID="btnLast" runat="server" Text="最后一页" cssclass="ButtonCss" OnClick="btnLast_Click" />
    <asp:Label ID="lblMessage" runat="server" Text="Label"></asp:Label>
    <asp:TextBox ID="txtPage" runat="server" Width="25px"></asp:TextBox>
    <asp:Button ID="btnGo" runat="server" Text="GO" OnClick="btnGo_Click"  />实现代码:using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public delegate void PageIndexChageDelegete();//定义委托
    public partial class AspPage : System.Web.UI.UserControl
    {
        //有多少条数据。
        public int Count
        {
            set
            {
                ViewState["count"] = value;
                getPageTotal();
                setButtonEnabled();
            }
            get
            {
                if (ViewState["count"] != null)
                {
                    return Convert.ToInt32(ViewState["count"]);            }
                else
                {
                    return 0;
                }        }
        }    public int PageSize
        {
            set { ViewState["pageSize"] = value; }
            get { return Convert.ToInt32(ViewState["pageSize"]); }
        }
        //总页数。
        public int PageCount
        {
            set { ViewState["pageCount"] = value; }
            get
            {
                if (ViewState["pageCount"] != null)
                {
                    return Convert.ToInt32(ViewState["pageCount"]);
                }
                else
                {
                    return 0;
                }
            }
        }
        public int CurrentPage
        {
            set { ViewState["currentPage"] = value; }
            get
            {
                if (ViewState["currentPage"] != null)
                {
                    return Convert.ToInt32(ViewState["currentPage"]);
                }
                else
                {
                    return 0;
                }
            }
        }    public event PageIndexChageDelegete pageIndexChanged;//定义事件    protected void Page_Load(object sender, EventArgs e)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("<script type='text/javascript' language='javascript'>");
            sb.Append(" function DataCheck()  ");
            sb.Append("{");
            sb.Append(" var num = document.getElementById('").Append(this.txtPage.ClientID).Append("').value;");
            sb.Append(" if(num =='') ");
            sb.Append(" { ");
            sb.Append(" alert('请至少输入一个数字!'); ");
            sb.Append(" return false; ");
            sb.Append(" } ");
            sb.Append(" var pattern=/\\d+/ ;");
            sb.Append(" var flag=pattern.test(num); ");
            sb.Append(" if(!flag)  ");
            sb.Append(" { ");
            sb.Append(" alert('请确认输入的是数字!'); ");
            sb.Append(" return false; ");
            sb.Append(" } ");
            sb.Append(" else ");
            sb.Append(" { ");
            sb.Append(" if(num>=1 && num<=").Append(PageCount).Append(")");
            sb.Append(" { ");
            sb.Append(" return true; ");
            sb.Append(" } ");
            sb.Append(" else ");
            sb.Append("{");
            sb.Append(" alert('请输入合适的页号!') ;");
            sb.Append(" return false; ");
            sb.Append(" } ");
            sb.Append(" } ");
            sb.Append(" } ");
            sb.Append("</script>");
            Page.RegisterStartupScript("ok", sb.ToString());
           
            this.btnGo.Attributes.Add("onclick", "return DataCheck();");
            if (!IsPostBack)
            {
                getPageTotal();
                setButtonEnabled();
                this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
            }
        }
        //得到总页数的方法。
        public void getPageTotal()
        {
            if (Count % PageSize == 0)
            {
                PageCount = Count / PageSize;
            }
            else
            {
                PageCount = (Count / PageSize) + 1;
            }
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
        }
        // 设置按钮的可用性
        private void setButtonEnabled()
        {
            if (PageCount == 1 || PageCount==0)
            {
                this.btnFirst.Enabled = false;
                this.btnBack.Enabled = false;
                this.btnLast.Enabled = false;
                this.btnNext.Enabled = false;
            }
            else if (CurrentPage == PageCount)
            {
                this.btnNext.Enabled = false;
                this.btnLast.Enabled = false;
                this.btnFirst.Enabled = true;
                this.btnBack.Enabled = true;
            }
            else if (CurrentPage == 1)
            {
                this.btnBack.Enabled = false;
                this.btnFirst.Enabled = false;
                this.btnLast.Enabled = true;
                this.btnNext.Enabled = true;
            }
            else
            {
                this.btnNext.Enabled = true;
                this.btnLast.Enabled = true;
                this.btnFirst.Enabled = true;
                this.btnBack.Enabled = true;
            }
        }
       //点击第一页返回第一页
        protected void btnFirst_Click(object sender, EventArgs e)
        {
            CurrentPage = 1;
            if (pageIndexChanged != null)
            {
                pageIndexChanged();
            }
            setButtonEnabled();
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);    }
        //上一页的实现代码
        protected void btnBack_Click(object sender, EventArgs e)
        {
            CurrentPage--;
            if (pageIndexChanged != null)
            {
                pageIndexChanged();
            }
            setButtonEnabled();
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
        }
        //下一页的实现代码
        protected void btnNext_Click(object sender, EventArgs e)
        {
            CurrentPage++;
            if (pageIndexChanged != null)
            {
                pageIndexChanged();
            }
            setButtonEnabled();
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
        }
        //最后一页的实现代码
        protected void btnLast_Click(object sender, EventArgs e)
        {
            CurrentPage = PageCount;
            if (pageIndexChanged != null)
            {
                pageIndexChanged();
            }
            setButtonEnabled();
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
        }
        //任意页的跳转
        protected void btnGo_Click(object sender, EventArgs e)
        {
            CurrentPage = Convert.ToInt32(this.txtPage.Text);
            if (pageIndexChanged != null)
            {
                pageIndexChanged();
            }
            setButtonEnabled();
            this.lblMessage.Text = string.Format("第{0}页/总共{1}页", CurrentPage, PageCount);
        }
    }
      

  7.   

    asp.net利用存储过程分页代码 
    C#高效分页代码
      

  8.   

    存储过程和Aspnetpager
    可以参考:
    http://blog.csdn.net/snoopy83101/archive/2009/09/09/4536582.aspx
      

  9.   


        //首页
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            this.GridView1.PageIndex = 0;
            DataBind();
        }
        //上一页
        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            if (this.GridView1.PageIndex > 0)
            {
                this.GridView1.PageIndex = this.GridView1.PageIndex - 1;
                DataBind();
            }
        }
        //下一页
        protected void LinkButton3_Click(object sender, EventArgs e)
        {
            if (this.GridView1.PageIndex < this.GridView1.PageCount)
            {
                this.GridView1.PageIndex = this.GridView1.PageIndex + 1;
                DataBind();
            }
        }
        //尾页
        protected void LinkButton4_Click(object sender, EventArgs e)
        {
            this.GridView1.PageIndex = this.GridView1.PageCount;
            DataBind();
        }
      

  10.   

    当前第XX页:在GridView的RowDataBound中 Label1.Text = string.Format("当前第{0}页/总共{1}页", this.GridView1.PageIndex + 1, this.GridView1.PageCount);
      

  11.   

    存储过程+aspnetpager
    非常方便,什么都可以自定义,显示的列,表名,条件等等
    不变以后就这了