求asp.net 手写分页代码,不要使用.net控件!
可以的话,小弟会加分的!

解决方案 »

  1.   

    aspnetpager用起来比较方便,没必要自己再写一个!!有现成的就用用好了
      

  2.   

    首先获取数据的时候要在存储过程中分页(两个分页参数PageIndex,PageSize),然后在前台这样做:<tr style="display: none;">
                                <td height="30" align="center" class="black">
                                    <br />
                                    <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">[首页]</asp:LinkButton>&nbsp;
                                    <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">[上一页]</asp:LinkButton>&nbsp;
                                    <asp:LinkButton ID="LinkButton3" runat="server" OnClick="LinkButton3_Click">[下一页]</asp:LinkButton>&nbsp;
                                    <asp:LinkButton ID="LinkButton4" runat="server" OnClick="LinkButton4_Click">[尾页]</asp:LinkButton>
                                    <br />
                                    共 <span class="redb">
                                        <%= TotalRows %>
                                    </span>条信息,当前显示<span class="redb">
                                        <%= CurrentRows %>
                                    </span>条,共<span class="redb">
                                        <%= TotalPage %>
                                    </span>页&nbsp; 到第
                                    <asp:DropDownList ID="ddpPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddpPage_SelectedIndexChanged">
                                    </asp:DropDownList>
                                    页
                                </td>
                            </tr>
    后台类中这样写:#region 分页属性
        public int PageIndex
        {
            get { return Convert.ToInt32(ViewState["pi"]); }
            set { ViewState["pi"] = value; }
        }
        public int PageSize
        {
            get { return Convert.ToInt32(ViewState["ps"]); }
            set { ViewState["ps"] = value; }
        }
        public int TotalPage
        {
            get { return Convert.ToInt32(ViewState["tp"]); }
            set { ViewState["tp"] = value; }
        }
        public int TotalRows
        {
            get { return Convert.ToInt32(ViewState["tr"]); }
            set { ViewState["tr"] = value; }
        }
        public int CurrentRows
        {
            get { return Convert.ToInt32(ViewState["cr"]); }
            set { ViewState["cr"] = value; }
        }
        #endregion #region 初始化
        protected void Page_Load(object sender, EventArgs e)
        {
                    PageIndex = 1;
                    PageSize = 1000;
                    TotalPage = 0;
                    TotalRows = 0;
                    CurrentRows = 0;
        }
     #endregion#region 控制按钮显示
        public void ShowButton()
        {
            if (TotalPage == 0 || TotalPage == 1)
            {
                LinkButton1.Enabled = false;
                LinkButton2.Enabled = false;
                LinkButton3.Enabled = false;
                LinkButton4.Enabled = false;
            }
            else if (PageIndex == 1)
            {
                LinkButton1.Enabled = false;
                LinkButton2.Enabled = false;
                LinkButton3.Enabled = true;
                LinkButton4.Enabled = true;
            }
            else if (PageIndex == TotalPage)
            {
                LinkButton1.Enabled = true;
                LinkButton2.Enabled = true;
                LinkButton3.Enabled = false;
                LinkButton4.Enabled = false;
            }
            else
            {
                LinkButton1.Enabled = true;
                LinkButton2.Enabled = true;
                LinkButton3.Enabled = true;
                LinkButton4.Enabled = true;
            }
        }
        #endregion    #region 分页
        protected void LinkButton1_Click(object sender, EventArgs e)
        {
            PageIndex = 1;
            BandData();
        }
        protected void LinkButton2_Click(object sender, EventArgs e)
        {
            PageIndex -= 1;
            BandData();
        }
        protected void LinkButton3_Click(object sender, EventArgs e)
        {
            PageIndex += 1;
            BandData();
        }
        protected void LinkButton4_Click(object sender, EventArgs e)
        {
            PageIndex = TotalPage;
            BandData();
        }
        #endregion    protected void ddpPage_SelectedIndexChanged(object sender, EventArgs e)
        {
            PageIndex = Convert.ToInt32(ddpPage.SelectedValue);
            BandData();
        }在页面加载前要先绑定数据,在绑定数据里面给分页属性赋值,绑定好数据后,调用ShowButton();
      

  3.   

    用分页存储过程  然后程序调用的时候赋给页码和每页显示行数就行了
    create proc pro_page
    @PageIndex int,
    @PageSize int
    as
    select top @pageSize * from tbName where id not in (
        select top @pageSize*(@pageIndex-1) id from tbName
    )
    这个是简单的 top方法 还有很多种方法 网上可以搜搜 有更快效率的分页存储过程
      

  4.   

    首先分页就遍历数据集
    stringbuilder
    <a href="a.aspx?pageno=1"/>
      

  5.   

    不要有.net的控件,不要存储过程(我用的access)的分页代码
      

  6.   

    存储过程分页
    MSSQL2000
    ALTER procedure P_GetPagedOrders2000
    (@startIndex int,
    @endIndex int
    )
    as
    set nocount on(--这行可有可无)
    declare @indextable table(id int identity(1,1),nid int)
    set rowcount @endIndex(--这行可有可无)
    insert into @indextable(nid) select orderid from orders order by orderid desc
    select O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName 
    from orders O
    left outer join Customers C
    on O.CustomerID=C.CustomerID
    left outer join Employees E
    on O.EmployeeID=E.EmployeeID
    inner join @indextable t on 
    O.orderid=t.nid
    where t.id between @startIndex and @endIndex order by t.id
    set nocount off
    RETURN
    MSSQL2005
    ALTER PROCEDURE P_GetPagedOrders2005
    (@startIndex INT, 
     @endindex INT
     )
    AS
    begin
    WITH orderList AS ( 
    SELECT ROW_NUMBER() OVER (ORDER BY O.orderid DESC)AS Row, O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName 
    from orders O
    left outer join Customers C
    on O.CustomerID=C.CustomerID
    left outer join Employees E
    on O.EmployeeID=E.EmployeeID)SELECT orderid,orderdate,customerid,companyName,employeeName
    FROM orderlist
    WHERE Row between @startIndex and @endIndexend
      

  7.   

    aspnetpager就很好了,我当时也找了好多方法最后用的这个
      

  8.   

    js分页函数。你gg一下,应该能找到现成的。
      

  9.   

    select top 10 * where XX表 where ID not in(select top 10 ID from XX表) 后面那个10是可变的。比10的时候是第二页,20的时候是第三页。0的时候就是第一页的!!用SQL来控制分页!!
      

  10.   

    分页代码,不要跟.net控件有关系!小弟急求!!
      

  11.   


    之前有一次面试的时候说我分页就用 aspnetpager  但是那个面试官告诉我。。aspnetpager 用起来不方便。。有时候会乱分页
      

  12.   

    用aspnetpage分页控件火狐浏览器下回出现乱码的。
      

  13.   

    C#代码参考,看7楼的:
    http://topic.csdn.net/u/20100327/17/8c6bb11c-889c-4d0d-a829-3b2756501e08.html
      

  14.   

    用repeater好些:private void BindUserInfoData()
            {
                List<Hashtable> list = B_AdminMember.B_getUserInfo();
                ps = new PagedDataSource();
                ps.DataSource = list;
                ps.AllowPaging = true;
                ps.PageSize = 2;
                Cache.Insert("Reps", ps);            repUserInfo.DataSource = (PagedDataSource)Cache["Reps"];
                repUserInfo.DataBind();           
            }
      protected void lbFirstPage_Click(object sender, EventArgs e)
            {
                if (Cache["Reps"] != null)
                {
                    ps = (PagedDataSource)Cache["Reps"];
                }
                else
                {
                    List<Hashtable> cl = B_AdminMember.B_getUserInfo();
                    ps = new PagedDataSource();
                    ps.DataSource = cl;
                    Cache.Insert("Reps", ps);
                    ps = (PagedDataSource)Cache["Reps"];
                }
                ps.CurrentPageIndex = 0;
                repUserInfo.DataSource = ps;
                repUserInfo.DataBind();
                         }        protected void lbPreviousPage_Click(object sender, EventArgs e)
            {
                if (Cache["Reps"] != null)
                {
                    ps = (PagedDataSource)Cache["Reps"];
                }
                else
                {
                  List<Hashtable> cl = B_AdminMember.B_getUserInfo();//从数据库获得list信息
                    ps = new PagedDataSource();
                    ps.DataSource = cl;
                    Cache.Insert("Reps", ps);
                    ps = (PagedDataSource)Cache["Reps"];
                }
                if (!ps.IsFirstPage)
                {
                    ps.CurrentPageIndex--;
                    repUserInfo.DataSource = ps;
                    repUserInfo.DataBind();
                }
            }        protected void lbNextPage_Click(object sender, EventArgs e)
            {
                if (Cache["Reps"] != null)
                {
                    ps = (PagedDataSource)Cache["Reps"];
                }
                else
                {
                    List<Hashtable> cl = B_AdminMember.B_getUserInfo();
                    ps = new PagedDataSource();
                    ps.DataSource = cl;
                    Cache.Insert("Reps", ps);
                    ps = (PagedDataSource)Cache["Reps"];
                }
                if (!ps.IsLastPage)
                {
                    ps.CurrentPageIndex++;
                    repUserInfo.DataSource = ps;
                    repUserInfo.DataBind();
                }
                Response.Write("window.location.href='#tab2';");
            }        protected void lbLastPage_Click(object sender, EventArgs e)
            {
                if (Cache["Reps"] != null)
                {
                    ps = (PagedDataSource)Cache["Reps"];
                }
                else
                {
                    List<Hashtable> cl = B_AdminMember.B_getUserInfo();
                    ps = new PagedDataSource();
                    ps.DataSource = cl;
                    Cache.Insert("Reps", ps);
                    ps = (PagedDataSource)Cache["Reps"];
                }
                ps.CurrentPageIndex = ps.PageCount - 1;
                repUserInfo.DataSource = ps;
                repUserInfo.DataBind();
            }
    ``````````````````
     BindUserInfoData();放在pageload里,认真看,你可以看懂的。
      

  15.   

    using System;
    using System.Collections.Generic;
    using System.Web;
    using dressmodel;
    using System.Text;
    using System.Text.RegularExpressions;    public class PaginatedList<T> : List<T>
        {
            private int pagezise;        public int Pagezise
            {
                get { return pagezise; }
                set { pagezise = value; }
            }
            private int pageindex;        public int Pageindex
            {
                get { return pageindex; }
                set { pageindex = value; }
            }
            private int TotalCount;        public int TotalCount1
            {
                get { return TotalCount; }
                set { TotalCount = value; }
            }
            private int TotalPage;        public int TotalPage1
            {
                get { return TotalPage; }
                set { TotalPage = value; }
            }
            private string url;        public string Url
            {
                get { return url; }
                set { url = value; }
            }
            public PaginatedList(IList<T> source, int pageindex, int pagezise,int totalcount, string url)
            {
                this.pageindex = pageindex;
                this.pagezise = pagezise;
                TotalCount = totalcount;
                TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
                this.AddRange(source);
                this.url = url;        }        #region 分页属性 返回分页数据
            public string GetPatePar
            {
                get
                {
                    if (TotalCount1 >= 1)
                    {
                                StringBuilder str = new StringBuilder();
                                int startpage = (pageindex - 1) / 10 * 10 + 1;
                                int endpage = (pageindex - 1) / 10 * 10 + 10;
                                int x = endpage > TotalPage ? TotalPage : endpage;
                                str.Append("<div class='anpager'>");                            if (HasPreviousPage)
                                {
                                    str.Append("<a href=" + url + "?page=1" + GetURLParms + ">首页</a>");
                                    str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + ">上一页</a>");
                                }
                                else
                                {
                                    str.Append("<a href=#>首页</a>");
                                    str.Append("<a href=#>上一页</a>");
                                }
                                for (int i = startpage; i <= x; i++)
                                {
                                    if (i == pageindex)
                                    {
                                        str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
                                    }
                                    else
                                    {
                                        str.Append(string.Format("<a href=" + url + "?page=" + i + GetURLParms + ">" + i + "</a>"));
                                    }
                                }
                                if (HasNextPage)
                                {                                str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + ">下一页</a>");
                                    str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + ">尾页</a>");
                                }
                                else
                                {
                                    str.Append("<a href=#>下一页</a>");
                                    str.Append("<a href=#>尾页</a>");
                                }
                                str.Append("</div>");
                                return str.ToString();
                    }
                    else
                    {
                        return "<font color=red>暂无数据!</font>";
                    }
                   
                }
            }
            #endregion 
            /// <summary>
            /// url重写
            /// </summary>
            private string GetURLParms
            {
                get
                {
                    string query = HttpContext.Current.Request.Url.Query;
                    query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
                    return query;
                }
            }
            /// <summary>
            ///判断是否有上一页
            /// </summary>
            public bool HasPreviousPage
            {
                get
                {
                    return (pageindex > 1);
                }
            }
            /// <summary>
            ///判断是否有下一页
            /// </summary>
            public bool HasNextPage
            {
                get
                {
                    return (pageindex < TotalPage);
                }
            }
        }
      

  16.   

    //声明一个页面数据源,用来缓存信息列表(所有的信息)
        PagedDataSource pds = new PagedDataSource();
        public void DataBind()
        {
            pds.DataSource = noticeMessage.getAllTrends();
            pds.AllowPaging = true;
            pds.PageSize = 10;        pds.CurrentPageIndex = Pager;
            this.Label4.Text = "第 " + (pds.CurrentPageIndex + 1) + " 页,共 " + (pds.PageCount) + " 页";        //设置PageDown / PageUp 按钮的状态
            this.Button3.Enabled = true;
            this.Button4.Enabled = true;        if (pds.IsFirstPage)
                this.Button3.Enabled = false;
            if (pds.IsLastPage)
                this.Button4.Enabled = false;        //控件绑定信息
            this.DataList1.DataSource = pds;
            this.DataList1.DataBind();    }    //声明一个变量保存当前页码
        public int Pager
        {
            get { return (int)ViewState["Pager"]; }
            set { ViewState["Pager"] = value; }
        }    //pageUp
        protected void Button3_Click(object sender, EventArgs e)
        {
            Pager--;
            DataBind();
        }
        //pageDown
        protected void Button4_Click(object sender, EventArgs e)
        {
            Pager++;
            DataBind();
        }