2011-02-14 81 views
2

我有一个ASP.NET Web窗体上的GridView,我已绑定到数据源并将其设置为每页有10个记录。离开Gridview后维护GridView当前页面索引页面

我在GridView上也有超链接列,这样用户可以从列表中导航到另一个页面(详细信息页面)。在详细资料页面,他们有“后退”按钮返回到GridView页面

编辑
只是为了澄清查询

我在寻找关于如何指定服务器端示例代码段数据绑定后设置GridView的页面索引。这个想法是确保用户导航到他们所在的相同页面索引。

回答

2

三个在您的处置基本选项更新您的链接。他们每个人都有自己的缺点和长处:

  1. 使用查询字符串将要求您格式化导致页面的gridview的各个环节都在查询字符串正确的信息(这可能最终会被多只一个页码)。
  2. 如果您确定每个浏览器实例都想要转到同一个网格视图,那么使用会话将很有用,否则您将不得不使用一些id关键字标记会话变量,这些id关键字可以针对每个有问题的gridview页面进行唯一标识。这可能会导致会话管理中的很多变量可能完全不受欢迎,因为它们中的大多数只能通过超时过期。
  3. 使用cookie需要类似的地方,cookie数据存储在密钥/数据矩阵中(优化后的哈希表可能适用于此)。不建议为每个你正在跟踪的gridview页面设置一个单独的cookie名称,而是建立一个具有通用名称的cookie,该名称保存所有被跟踪的gridview页面的数据,并且内部具有键/值结构。

编辑:设置页面索引的小代码片段。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     try 
     { 
      if(HttpContext.Current.Request["myGVPageId"] != null]) 
      { 
       myGridview.PageIndex = Convert.ToInt32(HttpContext.Current.Request["myGVPageId"]); 
      } 
     } 
     catch(Exception ex) 
     { 
      // log it 
     } 
    } 
} 
0

你必须使用查询字符串,并建议使用,否则你可以使用会话对象,但不要使用它,因为你可能有网格视图在不同的页面打开,所以使用查询字符串。查询字符串,会话cookie的:

gridView1.CurrentPageIndex = (Request["pageNo"] != null) ? Request["pageNo"] as int : 0; 
gridView1.DataSource = myDataSet; 
gridView1.DataBind(); 

你可以GridView_DataBound事件

+0

我编辑了查询,我找了示例代码段如何后在服务器端 – 2011-02-14 11:40:15

+2

数据绑定GridView的设置页面索引这是不正确的你“必须”使用查询字符串... – LeeCambl 2014-09-04 19:36:18

2

我更会话方法的风扇,个人。只需将页面索引保存为会话变量,并且如果在加载页面时该Session变量不为空,则使用它来激活“OnPageIndexChanging”方法,如下所示:

设置当前页码变化:

protected void GridViewIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     myGridView.PageIndex = e.NewPageIndex; 
     Session["pageNumber"] = e.NewPageIndex; 
     //whatever your page index changing does... 
    } 

然后,在Page_Load中做这样的事情:

 if (!IsPostBack) 
     { 
      if (Session["pageNumber"] != null) 
      { 
       GridViewIndexChanged(myGridView, new GridViewPageEventArgs((int)Session["pageNumber"])); 
      } 
     } 
1

您可以正餐的GridView的页面索引更改事件,并找出当前的页面索引E:摹

yourGridId.PageIndex=e.NewPageIndex; 
ViewState["GridPageIndex"]=e.NewPageIndex; 

在pageLoad的获取ViewState的价值

string pIndex=string.Empty; 
pIndex=Convert.toInt32(ViewState["GridPageIndex"]); 
if(!string.Empty(pIndex)) 
{ 
yourGridId.PageIndex =pIndex; 
}