要求必须要有首页,上一页,下页,尾页和跳转到第几页的功能,跳转到第几页可以是下拉列表来实现的?

解决方案 »

  1.   

    http://blog.csdn.net/durongjian/archive/2009/01/13/3767292.aspx,这个应该可以搞定了。
      

  2.   

    http://www.codefans.net/soft/2894.shtml刚错别字了……是aspnetpage……
      

  3.   

    http://www.codeproject.com/KB/custom-controls/ASPNETPagerControl.aspx
    最强大的.net分页控件,完全符合你的要求,也可以自己定制功能。
      

  4.   

    翻页控件
    第三方或者DataPager
      

  5.   

    HTML:一共:[ <asp:Label ID="lblAllCount" runat="server" Text="0"></asp:Label> ]条记录
    当前:[ <asp:Label ID="lblCurrentPage" runat="server" Text="1"></asp:Label> / <asp:Label ID="lblAllPage" runat="server"></asp:Label> ]&nbsp;
    <asp:LinkButton ID="lnkbtnFirst" runat="server" OnClick="LnkBtnFirst_Click">第一页</asp:LinkButton>&nbsp;
    <asp:LinkButton ID="lnkbtnPre" runat="server" OnClick="LnkBtnPre_Click">上一页</asp:LinkButton>&nbsp;
    <asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="LnkBtnNext_Click">下一页</asp:LinkButton>&nbsp;
    <asp:LinkButton ID="lnkbtnLast" runat="server" OnClick="LnkBtnLast_Click">最后一页</asp:LinkButton>&nbsp;
    <asp:DropDownList ID="SearchSelectJump" runat="server" OnSelectedIndexChanged="SearchSelectJump_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>C#string mySql = "select * from Mac_Order order by I.TitleSerial asc";        int myCurrentPage = Convert.ToInt32(this.lblCurrentPage.Text);  // 当前页
            mySearchPage = int.Parse(lblCurrentPage.Text.ToString()); // HTML中的页面参数        
            DataSet mySet = GetMySet(mySql);        PagedDataSource mySource = new PagedDataSource();        mySource.DataSource = mySet.Tables[0].DefaultView;
            mySource.AllowPaging = true;        // 分页大小
            mySource.PageSize = 10;        // 一共有多少条记录
            lblAllCount.Text = mySource.DataSourceCount.ToString();        if (Convert.ToInt32(this.lblCurrentPage.Text) > mySource.PageCount)
            {
                // 增加判断的目的是,当最后一页,只有一条记录的时候,当用删除了,页数,应该相应的少一页
                myCurrentPage = mySource.PageCount;            // 重写当前页的显示
                lblCurrentPage.Text = myCurrentPage.ToString();
            }        mySource.CurrentPageIndex = myCurrentPage - 1;        this.lnkbtnFirst.Enabled = true;
            this.lnkbtnPre.Enabled = true;
            this.lnkbtnNext.Enabled = true;
            this.lnkbtnLast.Enabled = true;        if (myCurrentPage == 1)
            {
                this.lnkbtnFirst.Enabled = false;
                this.lnkbtnPre.Enabled = false;
            }        if (myCurrentPage == mySource.PageCount)
            {
                this.lnkbtnNext.Enabled = false;
                this.lnkbtnLast.Enabled = false;
            }        // 一共有多少页
            this.lblAllPage.Text = mySource.PageCount.ToString();        // 初始化,下拉跳转页           // 重置,不然每翻一次页,就会多一次
            SearchSelectJump.Items.Clear();        for (int i = 0; i < mySource.PageCount; i++)
            {
                // i 必须从 0 开始,因为下面的 Items[i] 需要从 0 开始
                SearchSelectJump.Items.Add("" + (i + 1) + "");
                SearchSelectJump.Items[i].Value = "InfomationManage.aspx?SearchPage=" + (i + 1) + "&" + mySearchParam;            // 设置选中项
                if (mySearchPage == (i + 1))
                {
                    SearchSelectJump.Items[i].Selected = true;
                }
            }        // 数据绑定
            this.Repeater1.DataSource = mySource;
            this.Repeater1.DataBind();        RunDispose();
        }    protected void LnkBtnFirst_Click(object sender, EventArgs e)
        {
            this.lblCurrentPage.Text = "1";
            this.PaginationBind();
        }    protected void LnkBtnPre_Click(object sender, EventArgs e)
        {
            this.lblCurrentPage.Text = Convert.ToString((Convert.ToInt32(this.lblCurrentPage.Text) - 1));
            this.PaginationBind();
        }    protected void LnkBtnNext_Click(object sender, EventArgs e)
        {
            this.lblCurrentPage.Text = Convert.ToString((Convert.ToInt32(this.lblCurrentPage.Text) + 1));
            this.PaginationBind();
        }    protected void LnkBtnLast_Click(object sender, EventArgs e)
        {
            this.lblCurrentPage.Text = this.lblAllPage.Text;
            this.PaginationBind();
        }    protected void SearchSelectJump_SelectedIndexChanged(object sender, EventArgs e)
        {
            // 搜索和分页的参数都不能传到这里,只能将参数放到 DropDownList 的 Value 中了
            // Response.Redirect("InfomationManage.aspx?SearchPage=" + SearchSelectJump.Text.Trim() + "&" + mySearchParam);        
            Response.Redirect(SearchSelectJump.Text.Trim());
        }
      

  6.   

    页面代码中        <webdiyer:AspNetPager ID="aspPage" runat="server" AlwaysShow="True" OnPageChanged="aspPage_PageChanged" PageSize="5" ShowBoxThreshold="2" Width="236px">
                            </webdiyer:AspNetPager>
    .cs文件中    PagedDataSource pds = new PagedDataSource();
           protected void Data_Bind()
        {
            pds.DataSource = ServerAccountManager.GetAllISa();
            pds.AllowPaging = true;
            aspPage.RecordCount = pds.DataSourceCount;
            pds.PageSize = aspPage.PageSize;
            pds.CurrentPageIndex = aspPage.CurrentPageIndex - 1;
            
            //rptSa 为Repeater
            this.rptSa.DataSource  = pds;
            this.rptSa.DataBind();
            this.lblCount.Text = "总共 "+ServerAccountManager.GetAllCount() +" 个项目 "+"第 " + (pds.CurrentPageIndex + 1).ToString() + " 页 共 " + pds.PageCount.ToString() + " 页";
        }
        protected void aspPage_PageChanged(object sender, EventArgs e)
        {
            Data_Bind();
        }
      

  7.   

    把数据 填充 到 datatable中
    dim datatable as new data.datatable
    dim sda    as new sqldataadapter("sql查询")
    sda.fill(datatable)
    开始分页dim pds as new pagedatasource      声明分页
    pds.datasourec=datatable.defaultview  或取分页列表pds.allowdatapaging=true   允许分页
    pds.pagesize  =5    每页5条数据
    pds.carrentdataindex= 0  当前 页  如果你写 1  就显示 第5条数据后的5条数据最后就是吧  PDS绑定到控件中  看看你明白多少吧  
    用的是  vb.net 的 和C#差不多
      

  8.   

    pagedatesource
    或者
    存储过程
      

  9.   

    活用aspnetpager控件,还可使用存储过程
    共有<asp:Literal ID="RecordCount" runat="server"></asp:Literal>条记录
    共有<asp:Literal ID="PageCount" runat="server"></asp:Literal>页
    当前第<asp:Literal ID="Pageindex" runat="server"></asp:Literal>页
    <asp:HyperLink ID="FirstPage" runat="server" Text="首页"></asp:HyperLink>
    <asp:HyperLink ID="PrevPage" runat="server" Text="上一页"></asp:HyperLink>
    <asp:HyperLink ID="NextPage" runat="server" Text="下一页"></asp:HyperLink>
    <asp:HyperLink ID="LastPaeg" runat="server" Text="尾页"></asp:HyperLink>
    跳转到<asp:Literal ID="Literal1" runat="server"></asp:Literal>页private void NewsBind()
        {
            string SqlStr = "select * from [News] order by AddTime";        
            string connectionString = System.Configuration.ConfigurationManager.AppSettings["ConnectionSqlServer"].ToString();
            SqlConnection conn = new SqlConnection(connectionString);
            conn.Open();
            SqlDataAdapter Adapter = new SqlDataAdapter(SqlStr, conn);
            DataSet ds = new DataSet();
            try
            {
                Adapter.Fill(ds, "testTable");
                PagedDataSource objPage = new PagedDataSource();
                objPage.DataSource=ds.Tables["testTable"].DefaultView;
                objPage.AllowPaging=true;
                objPage.PageSize=3;
                int CurPage;
                if (Request.QueryString["Page"] != null)
                {
                    CurPage = Convert.ToInt32(Request.QueryString["page"]);
                }
                else
                {
                    CurPage = 1;
                }
                objPage.CurrentPageIndex = CurPage - 1;
                LeaveMessage.DataSource=objPage;
                LeaveMessage.DataBind();
                RecordCount.Text = objPage.DataSourceCount.ToString();
                PageCount.Text = objPage.PageCount.ToString();
                Pageindex.Text = CurPage.ToString();
                Literal1.Text = PageList(objPage.PageCount, CurPage);
                 FirstPage.NavigateUrl = Request.CurrentExecutionFilePath + "?page=1";
                PrevPage.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (CurPage - 1);
                NextPage.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + (CurPage + 1);           
                LastPaeg.NavigateUrl = Request.CurrentExecutionFilePath + "?page=" + objPage.PageCount.ToString();
                if (CurPage <= 1 && objPage.PageCount <= 1)
                {
                    FirstPage.NavigateUrl = "";
                    PrevPage.NavigateUrl = "";
                    NextPage.NavigateUrl = "";
                    LastPaeg.NavigateUrl = "";
                }
                if (CurPage <= 1 && objPage.PageCount > 1)
                {
                    FirstPage.NavigateUrl = "";
                    PrevPage.NavigateUrl = "";
                }
                if (CurPage >= objPage.PageCount)
                {
                    NextPage.NavigateUrl = "";
                    LastPaeg.NavigateUrl = "";
                    NextPage.Visible = false;
                    LastPaeg.Visible = false;
                }
            }
            catch(Exception error)
            {
                Response.Write(error.ToString());
            }
            finally
            {
                conn.Close();
            }
        }
        private string PageList(int Pagecount, int Pageindex)//private string Jump_List(int Pagecount , int Pageindex , long L_Manage)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<select id=\"Page_Jump\" name=\"Page_Jump\" onchange=\"window.location='" + Request.CurrentExecutionFilePath + "?page='+ this.options[this.selectedIndex].value + '';\">");        for (int i = 1; i <= Pagecount; i++)
            {
                if (Pageindex == i)
                    sb.Append("<option value='" + i + "' selected>" + i + "</option>");
                else
                    sb.Append("<option value='" + i + "'>" + i + "</option>");
            }
            sb.Append("</select>");
            return sb.ToString();
        }
    参考
    参考
      

  10.   

    aspnetpager控件在哪啊?找不到吗?
      

  11.   

    我用是写的分页控件<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PadingControl.ascx.cs"
        Inherits="UserControl_PadingControl" %>
    当前页<asp:Label ID="lblCurrent" runat="server"></asp:Label>/<asp:Label ID="lblTotal"
        runat="server"></asp:Label>
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    <asp:LinkButton ID="btnFirst" runat="server" OnClick="btnFirst_Click" CausesValidation="False">首页</asp:LinkButton>
    <asp:LinkButton ID="btnPre" runat="server" OnClick="btnPre_Click" CausesValidation="False">上一页</asp:LinkButton>
    <asp:LinkButton ID="btnNext" runat="server" OnClick="btnNext_Click" CausesValidation="False">下一页</asp:LinkButton>
    <asp:LinkButton ID="btnLast" runat="server" OnClick="btnLast_Click" CausesValidation="False">尾页</asp:LinkButton>
    <asp:TextBox ID="txtPageNo" runat="server"></asp:TextBox>
    <asp:RegularExpressionValidator ID="revPageNo" runat="server" Display="Dynamic" ValidationExpression="^[0-9]*$"
        ControlToValidate="txtPageNo" ErrorMessage="请输入数字"></asp:RegularExpressionValidator>
    <asp:Button ID="btnGo" runat="server" Text="Go" OnClick="btnGo_Click" CausesValidation="False" />
    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 partial class UserControl_PadingControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {    }
        /// <summary>
        /// PaddingChange事件的委托
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        public delegate void PadingChangeHandler(int pageIndex, int pageSize);    /// <summary>
        /// 定义一个事件
        /// </summary>
        public event PadingChangeHandler PadingChange;    /// <summary>
        /// 总记录数
        /// </summary>
        public int RecordNum
        {
            get
            {
                return Convert.ToInt32(ViewState["RecordNum"]);
            }
            set
            {
                if (value < 0)
                    throw new Exception("记录数不能为负数!");            ViewState["RecordNum"] = value;
            }
        }    /// <summary>
        /// 页大小
        /// </summary>
        public int PageSize
        {
            get
            {
                return Convert.ToInt32(ViewState["PageSize"]);
            }
            set
            {
                if (value <= 0)
                    throw new Exception("页大小必须大于0!");            ViewState["PageSize"] = value;
            }
        }    /// <summary>
        /// 总记录数
        /// </summary>
        public int TotalPageNum
        {
            get
            {
                return
              Convert.ToInt32(ViewState["TotalPageNum"]);
            }
            set
            {
                if (value < 0)
                    throw new Exception("页大小不能为负数!");
                ViewState["TotalPageNum"] = value;
                this.lblTotal.Text = value.ToString();
            }
        }    /// <summary>
        /// 当前页
        /// </summary>
        public int PageIndex
        {
            get
            {
                return Convert.ToInt32(ViewState["PageIndex"]);
            }
            set
            {
                if (value <= 0)
                    value = 1;
                else if (value > this.TotalPageNum)
                {
                    value = this.TotalPageNum;
                }            if (value == 1)
                {
                    this.btnFirst.Enabled = false;
                    this.btnPre.Enabled = false;
                    this.btnNext.Enabled = true;
                    this.btnLast.Enabled = true;
                }
                else if (value == this.TotalPageNum)
                {
                    this.btnFirst.Enabled = true;
                    this.btnPre.Enabled = true;
                    this.btnNext.Enabled = false;
                    this.btnLast.Enabled = false;
                }
                else
                {
                    this.btnFirst.Enabled = true;
                    this.btnPre.Enabled = true;
                    this.btnNext.Enabled = true;
                    this.btnLast.Enabled = true;
                }            this.lblCurrent.Text = value.ToString();
                ViewState["PageIndex"] = value;            if (PadingChange != null)//有事件响应
                {
                    PadingChange(this.PageIndex, PageSize);
                }
            }
        }    public void InitPading(int recordNum, int pageSize, int pageIndex)
        {
            this.PageSize = pageSize;
            this.RecordNum = recordNum;        this.TotalPageNum = Convert.ToInt32(Math.Ceiling(this.RecordNum * 1.0 / this.PageSize * 1.0));        this.PageIndex = pageIndex;
        }
        protected void btnFirst_Click(object sender, EventArgs e)
        {
            this.PageIndex = 1;
        }
        protected void btnPre_Click(object sender, EventArgs e)
        {
            this.PageIndex--;
        }
        protected void btnNext_Click(object sender, EventArgs e)
        {
            this.PageIndex++;
        }
        protected void btnLast_Click(object sender, EventArgs e)
        {
            this.PageIndex = this.TotalPageNum;
        }
        protected void btnGo_Click(object sender, EventArgs e)
        {
            try
            {
                this.PageIndex = int.Parse(this.txtPageNo.Text);
            }
            catch (Exception)
            {        }
        }
    }
      

  12.   

    7楼代码中
    fou循环下的"mySearchParam"这个变量时哪来的?
      

  13.   

    AspPageNet 简单点,,,写个 分页 SQL语句~
      

  14.   

    分页的sql,查询总数的sql,一个ViewState~
      

  15.   


            DataSet ds  = p.select_type();
            //创建分页类
            PagedDataSource MyPaged = new PagedDataSource();
            //设置数据源
            MyPaged.DataSource = ds.Tables[0].DefaultView;
            //允许分页
            MyPaged.AllowPaging = true;
            //设置每页显示的项数
            MyPaged.PageSize = 20;
            //定义变量用来保存当前页索引
            int MyCurrentPage;
            //判断是否具有页面跳转的请求
            if (Request.QueryString["Page"] != null)
                MyCurrentPage = Convert.ToInt32(Request.QueryString["Page"]);
            else
                MyCurrentPage = 1;
            //设置当前页的索引
            MyPaged.CurrentPageIndex = MyCurrentPage - 1;
            //显示状态信息
            //this.Label1.Text = "当前页:" + MyCurrentPage.ToString() + "/" + MyPaged.PageCount;
            //如果当前页面不是首页
            if (!MyPaged.IsFirstPage)
                //设置"上一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
                this.HyperLink1.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(MyCurrentPage - 1);
            //如果当前页面不是最后一页
            if (!MyPaged.IsLastPage)
                //设置"下一页"超级链接的URL为:当前执行页面的虚拟路径,并传递下一页面的索引值
                this.HyperLink2.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(MyCurrentPage + 1);
            //进行数据绑定
            this.Repeater2.DataSource = MyPaged;
            this.Repeater2.DataBind();上页和下页   其他的类似了  自己做
      

  16.   

    Repeater 无刷新分页
    Repeater 无刷新分页
      

  17.   

    分页还是不能成功,说缺少对象
    private void DataBindToRepeater() {
                GreenProductManager manager = new GreenProductManager();
                DataTable table = manager.showGreenProductCategory();
                PagedDataSource pds = new PagedDataSource();
                pds.DataSource = table.DefaultView;
                pds.AllowPaging = true;
                pds.PageSize = 6;            int myCurrentPage = Convert.ToInt32(this.lblCurrentPage.Text);
                //int mySearchPage = Int32.Parse(this.lblCurrentPage.Text);
                //一共有多少条记录
                this.lblAllCount.Text = pds.DataSourceCount.ToString();
                //如果最后一页为当前页则为当前页
                if (Convert.ToInt32(this.lblCurrentPage.Text) > pds.PageCount)
                {
                    myCurrentPage = pds.PageCount;
                    //重写当前页的显示
                    this.lblCurrentPage.Text = myCurrentPage.ToString();
                }
                pds.CurrentPageIndex = myCurrentPage - 1;
                this.lnkbtnFirst.Enabled = true;
                this.lnkbtnNext.Enabled = true;
                this.lnkbtnPre.Enabled = true;
                this.lnkbtnLast.Enabled = true;            if (myCurrentPage == 1)
                {
                    this.lnkbtnFirst.Enabled = false;
                    this.lnkbtnPre.Enabled = false;
                }
                //如果当前页是最后一页
                if (myCurrentPage == pds.PageCount)
                {
                    this.lnkbtnNext.Enabled = false;
                    this.lnkbtnLast.Enabled = false;
                }
                //一共有多少页
                this.lblAllPage.Text = pds.PageCount.ToString();
                
                this.repeaterRightAll.DataSource = pds;
                this.repeaterRightAll.DataBind();        }
    //首页
            protected void LnkBtnFirst_Click(object sender, EventArgs e)
            {
                this.lblCurrentPage.Text = "1";
                this.DataBindToRepeater();
            }
            //前一页
            protected void LnkBtnPre_Click(object sender, EventArgs e)
            {
                this.lblCurrentPage.Text = Convert.ToString(Convert.ToInt32(this.lblCurrentPage.Text) - 1);
                this.DataBindToRepeater();
            }
            //下一页
            protected void LnkBtnNext_Click(object sender, EventArgs e)
            {
                this.lblCurrentPage.Text = Convert.ToString(Convert.ToInt32(this.lblCurrentPage.Text) + 1);
                this.DataBindToRepeater();
            }
            //尾页
            protected void LnkBtnLast_Click(object sender, EventArgs e)
            {
                this.lblCurrentPage.Text = this.lblAllPage.Text;
                this.DataBindToRepeater();
            }
      

  18.   

    http://blog.csdn.net/Sandy945/archive/2009/05/22/4208998.aspx
    你把代码 粘贴过去 就能运行
      

  19.   

    PagedDataSource 我觉得数据少还可以。数据太多的话, 还是写个分面存储过程,效率高些
      

  20.   

    感谢各位对我的帮助,问题已经解决了,原来是页面没有加form
    下班前结贴!