Asp.net 离开GridView页面后维护GridView当前页面索引
我在ASP.NET web窗体上有一个GridView,我已将其绑定到一个数据源,并将其设置为每页有10条记录 我在GridView上还有一个超链接列,这样用户就可以从列表中导航到另一个页面(详细信息页面)。在详细信息页面上,他们有“返回”按钮返回GridView页面 编辑Asp.net 离开GridView页面后维护GridView当前页面索引,asp.net,gridview,Asp.net,Gridview,我在ASP.NET web窗体上有一个GridView,我已将其绑定到一个数据源,并将其设置为每页有10条记录 我在GridView上还有一个超链接列,这样用户就可以从列表中导航到另一个页面(详细信息页面)。在详细信息页面上,他们有“返回”按钮返回GridView页面 编辑 我只是想澄清一下这个问题 我正在服务器端寻找关于如何指定页面索引以在数据绑定后设置GridView的示例代码片段。这样做的目的是确保用户导航到他们所在的相同页面索引。您必须使用查询字符串,建议您使用,否则您可以使用会话对象,
我只是想澄清一下这个问题
我正在服务器端寻找关于如何指定页面索引以在数据绑定后设置GridView的示例代码片段。这样做的目的是确保用户导航到他们所在的相同页面索引。您必须使用查询字符串,建议您使用,否则您可以使用会话对象,但不要使用会话对象,因为您可能会在不同页面中打开网格视图,所以请使用查询字符串
gridView1.CurrentPageIndex = (Request["pageNo"] != null) ? Request["pageNo"] as int : 0;
gridView1.DataSource = myDataSet;
gridView1.DataBind();
您可以在
GridView\u DataBound
event上更新您的链接,您可以使用三个基本选项:查询字符串、会话、cookie。它们各有优缺点:
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
}
}
}
就我个人而言,我更喜欢会话方法。只需将页面索引保存为会话变量,如果此会话变量在页面加载时不为null,则使用它启动“OnPageIndexChange”方法,如下所示: 每当页码更改时,设置当前页码:
protected void GridViewIndexChanging(object sender, GridViewPageEventArgs e)
{
myGridView.PageIndex = e.NewPageIndex;
Session["pageNumber"] = e.NewPageIndex;
//whatever your page index changing does...
}
然后,在页面上执行如下操作:
if (!IsPostBack)
{
if (Session["pageNumber"] != null)
{
GridViewIndexChanged(myGridView, new GridViewPageEventArgs((int)Session["pageNumber"]));
}
}
您可以使用Gridview的页面索引更改事件,并查找当前页面索引,例如:
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;
}
我已经编辑了查询,我正在寻找关于如何在数据绑定后设置页面索引的示例代码片段服务器端的GridView PageIndex不是CurrentPageIndexy您忘记了ViewState[]@Fernando68:ViewState仅在链接实际上没有离开页面时才起作用。OP要求提供一个可以单击链接的解决方案,当用户返回页面时,应用相同的索引。ViewState无法完成此操作。如果GridView位于UpdatePanel内,则ViewState就足够了,因为没有整体回发。对不起,我就是这样让它为我工作的。我不希望在会话的整个生命周期中保留数据。@Fernando68:OP明确指出,目的是转到另一个页面,而不是UpdatePanel
这样用户就可以导航到另一个页面
。虽然您的观点是正确的,但ViewState将适用于UpdatePanel,这个问题在要求退出当前页面时是明确的。ViewState将不允许这样做。在加载页面上,ViewState[“GridPageIndex”]为空。如果希望页面索引在页面加载时具有任意值,则应使用会话[“GridPageIndex”]