我现在要做一个利用GridView分页,查询出userInfo表里面的全部user信息,并进行分页,而页面上只显示了user表里面的部分字段信息,并没有全部显示,点击后面的详细信息,转到详细页面userdetails.aspx显示user的全部信息,假如我现在在第三页点击详细信息,点击userdetails.aspx页面的返回按钮,让它跳转回去的时候,也跳转在第三页怎么做?请高手指点

解决方案 »

  1.   

    用javascript 脚本就可以了啊,  history.go(-1)
      

  2.   

    做个session保存你第三页的路径..
      

  3.   

    做个session保存你第三页的路径..
    [/Quote]
    具体一点啊
      

  4.   

    如果你不希望用Gridview 本身的分页的 话
    先 搞个 分页的  用户 控件 也可以自己 拖几个 控件
    代码 如下 
    :namespace Light.EXP.WebUI.SystemFrame
    {
        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 DataPager : System.Web.UI.UserControl
        {
            #region 分页相关变量定义  属性
            /// <summary>
            /// 每页显示的数据个数        /// </summary>
            private int PageSize
            {
                get
                {
                    if (this.ViewState["PageSize"] != null)     //相当于ViewState隐藏的一个控件   视图
                    {
                        return Convert.ToInt32(this.ViewState["PageSize"]);
                    }
                    return 10;      //每页10条数据默认 
                }
                set
                {
                    this.ViewState["PageSize"] = value;
                }
            }        /// <summary>
            /// 当前要显示的页数
            /// </summary>
            public int CurrentPage
            {
                get
                {
                    if (this.ViewState["CurrentPage"] != null)
                    {
                        return Convert.ToInt32(this.ViewState["CurrentPage"]);
                    }
                    return 1;
                }
                set
                {
                    this.ViewState["CurrentPage"] = value;
                }
            }        /// <summary>
            /// 待分页控件的ID
            /// </summary>
            public string ControlNameToPager
            {
                get
                {
                    if (this.ViewState["ControlNameToPager"] != null)
                    {
                        return this.ViewState["ControlNameToPager"].ToString();
                    }
                    return string.Empty;
                }
                set
                {
                    this.ViewState["ControlNameToPager"] = value;
                }
            }
    后面还有
      

  5.   


            /// <summary>
            /// 本次执行分页数据的总的数据行数
            /// </summary>
            private Int64 TotalCount
            {
                get
                {
                    if (this.ViewState["TotalCount"] != null)
                    {
                        return Convert.ToInt64(this.ViewState["TotalCount"]);
                    }
                    return 0;
                }
                set
                {
                    this.ViewState["TotalCount"] = value;
                }
            }
            /// <summary>
            /// 委托函数变量
            /// </summary>
            //private GetPagerDataDelegate GetPagerData
            //{
            //    get
            //    {
            //        if (this.ViewState["GetPagerData"] != null)
            //        {
            //            return (GetPagerDataDelegate)this.ViewState["GetPagerData"];
            //        }
            //        return _GetPagerData;
            //    }
            //    set
            //    {
            //        this.ViewState["GetPagerData"] = value;
            //    }
            //}
            
            
            private static GetPagerDataDelegate _GetPagerData = null;
            //------------------------------------------------------------------------------------
            public delegate DataSet GetPagerDataDelegate(int pageIndex, ref Int64 totalCount);
            //------------------------------------------------------------------------------------         
            #endregion        #region 分页事件
            /// <summary>
            /// 首页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void lnkbHome_Click(object sender, EventArgs e)
            {
                CurrentPage = 1;    
                this.ShowData();
            }        /// <summary>
            /// 上一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void lnkbPriv_Click(object sender, EventArgs e)
            {
                CurrentPage--;       //当前页--
                this.ShowData();
            }        /// <summary>
            /// 下一页        /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void lnkbNext_Click(object sender, EventArgs e)
            {
                CurrentPage++;     //当前页++
                this.ShowData();
            }        /// <summary>
            /// 尾页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void lnkbLast_Click(object sender, EventArgs e)
            {
                CurrentPage = (int)Math.Ceiling((decimal)(TotalCount / (decimal)PageSize));   //Ceiling
                this.ShowData();
            }        /// <summary>
            /// 跳转到第几页     
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void lnkbGo_Click(object sender, EventArgs e)
            {
                if (this.txtbNum.Text.Trim().Length == 0)
                {
                    CurrentPage = 1;
                }
                else
                {
                    CurrentPage = int.Parse(this.txtbNum.Text);
                }
                this.ShowData();
            }
            #endregion        #region 分页实现
            /// <summary>
            /// 引用此分页控件的Web页面调用的分页实现方法        /// </summary>
            /// <param name="GetPagerData"></param>
            /// <param name="PageSize"></param>
            public void BindDataPage(GetPagerDataDelegate getPagerData, int pageSize)
            {
                PageSize = pageSize;
                _GetPagerData = getPagerData;
                this.ShowData();
            }        /// <summary>
            /// 显示数据
            /// </summary>
            /// <param name="GetPagerData"></param>
            private void ShowData()
            {
                Int64 totalCount = 0;
                DataSet ds = _GetPagerData(CurrentPage, ref totalCount);            TotalCount = totalCount;
                
                //绑定数据
                object listControl = this.Parent.FindControl(this.ControlNameToPager);            if (listControl.GetType().ToString() == "System.Web.UI.WebControls.DataList")
                {
                    DataList list = (DataList)listControl;
                    list.DataSource = ds;
                    list.DataBind();
                }
                if (listControl.GetType().ToString() == "System.Web.UI.WebControls.GridView")
                {
                    GridView list = (GridView)listControl;                                //查询时,如果没有数据,GridView控件表头需显示出来 -- 2007-12-02 刘道营添加                if (ds.Tables[0].Rows.Count == 0)
                    {
                        ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
                        list.DataSource = ds;
                        list.DataBind();
                        int columnCount = list.Rows[0].Cells.Count;
                        list.Rows[0].Cells.Clear();
                        list.Rows[0].Cells.Add(new TableCell());
                        list.Rows[0].Cells[0].ColumnSpan = columnCount;
                        list.Rows[0].Cells[0].Text = "没有符合条件的数据!";
                    }
                    else
                    {
                        list.DataSource = ds;
                        list.DataBind();
                    }
                }            this.SetPagerUI();
            }        /// <summary>
            /// 设置分页控件的UI显示
            /// </summary>
            /// <param name="TotalCount"></param>
            private void SetPagerUI()
            {
                this.DisableControl();            int totalPages = (int)Math.Ceiling((decimal)(TotalCount / (decimal)PageSize));            string CurrentPageText = "总数{0}条&nbsp;每页{1}条&nbsp;共{2}页&nbsp;当前第{3}页";            if (totalPages < 1)
                {
                    this.lbCurrentPageText.Text = "没有可以显示的数据";
                    this.txtbNum.Text = "";
                }
                else
                {
                    this.lbCurrentPageText.Text = string.Format(CurrentPageText, new object[] { TotalCount, PageSize, totalPages, CurrentPage });
                    this.txtbNum.Text = CurrentPage.ToString();
                }                if (totalPages > 1)
                {
                    if (CurrentPage != 1)
                    {
                        this.lnkbHome.Enabled = true;
                        this.lnkbPriv.Enabled = true;
                    }
                    else
                    {
                        this.lnkbHome.Enabled = false;
                        this.lnkbPriv.Enabled = false;
                    }
                    if (CurrentPage < totalPages)
                    {
                        this.lnkbNext.Enabled = true;
                        this.lnkbLast.Enabled = true;
                    }
                    else
                    {
                        this.lnkbNext.Enabled = false;
                        this.lnkbLast.Enabled = false;
                    }
                    this.txtbNum.Enabled = true;
                    this.lnkbGo.Enabled = true;                //验证跳转到的值是否在正常范围内                RangeValidator rv = new RangeValidator();
                    rv.ControlToValidate = this.txtbNum.ID;
                    rv.MaximumValue = totalPages.ToString();
                    rv.MinimumValue = "1";
                    rv.Type = ValidationDataType.Integer;
                    rv.EnableClientScript = true;
                    rv.ToolTip = "页号必须为数值,且位于" + rv.MinimumValue + " - " + rv.MaximumValue + "之间。";
                    rv.ErrorMessage = "*";                this.pnlValid.Controls.Add(rv);
                }
            }        /// <summary>
            /// 禁用分页控制按钮
            /// </summary>
            private void DisableControl()
            {            
                this.lnkbHome.Enabled = false;
                this.lnkbLast.Enabled = false;
                this.lnkbNext.Enabled = false;
                this.lnkbPriv.Enabled = false;
                this.lnkbGo.Enabled = false;
                this.txtbNum.Enabled = false;
            }
            #endregion
        }
    }
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="DataPager.ascx.cs" Inherits="Light.EXP.WebUI.SystemFrame.DataPager" %>
    <table cellpadding="0" cellspacing="0" width="570" align="center">
        <tr>
            <td align=center>
                <table cellpadding="0" cellspacing="0" width="100%" align="center">
                    <tr>
                        <td width="200" align="center"><asp:Label ID="lbCurrentPageText" runat="server"></asp:Label></td>
                        <td width="200" align="center">
                            <asp:LinkButton ID="lnkbHome" runat="server" onclick="lnkbHome_Click">首页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="lnkbPriv" runat="server" onclick="lnkbPriv_Click">上一页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="lnkbNext" runat="server" onclick="lnkbNext_Click">下一页</asp:LinkButton>&nbsp;
                            <asp:LinkButton ID="lnkbLast" runat="server" onclick="lnkbLast_Click">最后一页</asp:LinkButton>&nbsp;
                        </td>
                        <td width="80" align="center">
                            <asp:TextBox ID="txtbNum" runat="server" Width="30px" Height="15px"></asp:TextBox>
                        </td>
                        <td align="left">
                            <asp:Panel ID="pnlValid" runat="server">
                                <asp:LinkButton ID="lnkbGo" runat="server" onclick="lnkbGo_Click">GO</asp:LinkButton>
                            </asp:Panel>
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
      

  6.   

    存储过程里的:set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    /********************************************************************************* 
    *过程名称: uspGetBillDispenses
    *功能描述: 获取多条票据分发信息
    *输入参数: 
    @receiveBillPerson NVARCHAR(40), --领票人名称
    @billType VARCHAR(50),       --票据类型 @pageIndex INT, --待读取的页索引
    @pageSize INT, --每页显示的记录数
    @recordCount INT OUTPUT --总记录数
    *输出参数: 
    @recordCount int out
    *返回值:
    PKID,                   --票据ID
        BillType,                --票据类型
        BillStartCode,           --票据开始号
        BillEndCode,               --票据结束号
        ReceiveBillPerson,        --领票人名称
        AcceptStation,           --接货点
        ReceiveBillTime,          
        ReleasePerson
    *作   者: 乔虎跃
    *创建日期: 2009-3-30     
    ***********************************************************************************/
    ALTER proc [dbo].[uspGetBillDispenses]
    (
    @BillType varchar(50),          --票据类型   
    @ReceiveBillPerson varchar(50), --领票人名称
    @pageIndex INT, --待读取的页索引
    @pageSize INT, --每页显示的记录数
    @recordCount INT OUTPUT --总记录数
    )
    AS
    BEGIN
    DECLARE @sqlRC NVARCHAR(4000) --RecordCount SQL
    DECLARE @sqlRS NVARCHAR(4000) --ResultSet SQL
    --删除表中2条相同记录
    Set @sqlRc='Select @recordCount = Count(*) From billmgt_billDispense where 0=0 '
            if @BillType<>'全部'
            begin
            set @sqlrc=@sqlrc+' and BillType='''+@BillType+''''
            end
            if @ReceiveBillPerson<>''
            begin
            set @sqlrc=@sqlrc+' and ReceiveBillPerson like ''%''+REPLACE('''+@ReceiveBillPerson+''',''%'', ''/%'') + ''%'' ESCAPE ''/'' '
            end
    EXEC sp_executesql @sqlRC, N'@recordCount INT OUTPUT', @recordCount OUTPUT
         
            set @sqlrs='select pkid,BillType,BillStartcode,BillEndCode,receiveBillperson,acceptstation,ReceiveBillTime,releaseperson from(Select PKID,BillType,BillStartcode,BillEndCode,receiveBillperson,acceptstation,ReceiveBillTime,releaseperson ,ROW_NUMBER() OVER (ORDER BY BillType desc) AS SerialNumber From billmgt_billDispense where 0=0 '
            --ROW_NUMBER() OVER (ORDER BY BillType desc) AS SerialNumber 他是一个自定义列,和别的列要有 逗号
            if @BillType<>'全部'                                                                  
            begin
            set @sqlrs=@sqlrs+' and BillType='''+@BillType+''' '
            end
            if @ReceiveBillPerson<>''
            begin
            set @sqlrs=@sqlrs+' and ReceiveBillPerson like ''%''+REPLACE('''+@ReceiveBillPerson+''',''%'', ''/%'') + ''%'' ESCAPE ''/'' '        
            end
           
    SET @sqlRS = 
    @sqlRS + 
    ' )as t where t.SerialNumber > ' + CONVERT(NVARCHAR(100), (@pageIndex - 1) * @pageSize) +
    ' and t.SerialNumber <= ' + CONVERT(NVARCHAR(100), @pageIndex * @PageSize)  EXEC (@sqlRS)
    END  
    你 可以 把我 的 参数换下 就可以了 
      

  7.   

    转到详细页面userdetails.aspx显示user的全部信息,假如我现在在第三页点击详细信息,点击userdetails.aspx页面的返回按钮,让它跳转回去的时候,也跳转在第三页怎么做?后退前进走的页面缓存,如果有返回按钮什么的可以顺便从分页列表页点编辑的时候传个Url=userdetails.aspx?page=2过去,在编辑页点返回按钮的时候server.Transfan(userdetails.aspx?page=2)
      

  8.   

    你是用 C#.NET 的 !這問題好辦啊!!
    在單擊 按鈕 的 按鈕單擊事件裏 寫session = gridview 當前的頁數
    然後在你的 userdetails.aspx 頁面裏 string str=session 
    得到 頁數。 再把 str 值賦給 userdetails.aspx 頁面的 gridview 控件屬性中
    這樣就好了!!
    你說的 點擊 返回 也能這樣 你再這麼操作一次就好了我說的這些是 思路,代碼自己 寫吧  呵呵
      

  9.   

    用你的代码,楼主还要自己改,分页不如用apsxnetpageer+存储过程
      

  10.   

    GridView的翻页事件里加个Session就行了,PageLoad的时候判断这个Session的值,如果有值就转到这个分页下面去,没值就显示第一页就行了,Gridview的PageIndex属性就是管理这个的
      

  11.   

    gridview.PageIndex = 你之前记录的页数
      

  12.   

    1.你在第三页点击详细时 将当前页码保存在session中
    2.在详细画面点击返回后
      在主画面的page_load中判断下
      if (来自详细画面)
      {
        取到当前页码。
         根据页码显示grdiview
      }
      

  13.   

     <table width="100%" border="0" cellspacing="0" cellpadding="0" runat="server" id="table1">
                                                        <tr>
                                                            <td class="orangeLine">
                                                            </td>
                                                        </tr>
                                                        <tr>
                                                            <td align="center" style="padding-top: 3px;" height="26" bgcolor="#D9E5F5" >
                                                                <asp:HyperLink ID="hl_page_first" runat="server">首页</asp:HyperLink>
                                                                |
                                                                <asp:HyperLink ID="hl_page_pre" runat="server">上一页</asp:HyperLink>
                                                                |
                                                                <asp:HyperLink ID="hl_page_next" runat="server">下一页</asp:HyperLink>
                                                                |
                                                                <asp:HyperLink ID="hl_page_last" runat="server">尾页</asp:HyperLink>
                                                                <asp:DropDownList ID="drpPage" runat="server"></asp:DropDownList>
                                                                <asp:Button ID="btnGO" runat="server" Text="GO" onclick="btnGO_Click" />
                                                            </td>
                                                        </tr>
                                                    </table>
     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int page = 0;            if (Request.QueryString["page"] != null && Request.QueryString["page"].ToString() != "")
                    page = Convert.ToInt32(Request.QueryString["page"]);
                this.BindNews(page);
                
            }
            
        }
    public void BindNews(int page)
        {
            CBIChinaNews cbiChinaNews = new CBIChinaNews();
            DataTable dt = cbiChinaNews.GetCbiAllChinaNews();        gvNews.DataSource = dt;
            gvNews.PageIndex = page;
            gvNews.DataBind();        
            lgvCount.Text = dt.Rows.Count.ToString();
            string url = "newsList.aspx";
            if (page == 0)
            {
                hl_page_first.Enabled = false;
                hl_page_pre.Enabled = false;
                hl_page_last.Enabled = true;
                hl_page_next.Enabled = true;
            }
            else
            {
                hl_page_first.Enabled = true;
                hl_page_pre.Enabled = true;
                hl_page_last.Enabled = true;
                hl_page_next.Enabled = true;
                hl_page_first.NavigateUrl = url + "?page=0";
                hl_page_pre.NavigateUrl = url + "?page=" + Convert.ToString(page - 1);
            }
            if (page + 1 >= gvNews.PageCount)
            {
                hl_page_first.Enabled = true;
                hl_page_pre.Enabled = true;
                hl_page_last.Enabled = false;
                hl_page_next.Enabled = false;
            }
            else
            {
                hl_page_last.Enabled = true;
                hl_page_next.Enabled = true;
                hl_page_last.NavigateUrl = url + "?page=" + Convert.ToString(gvNews.PageCount - 1);
                hl_page_next.NavigateUrl = url + "?page=" + Convert.ToString(page + 1);
            }
            lgvPage.Text = Convert.ToString(page + 1) + "/" + gvNews.PageCount.ToString();
        }protected void btnGO_Click(object sender, EventArgs e)
        {
      this.BindNews(Convert.ToInt32(this.drpPage.Text) - 1);
        }这个也挺好的
      

  14.   

    up  up  直接返回指定的页数!
      

  15.   

    你点击详细的时候新弹出一页来不就行了么,对gridview分页也没有影响