gpt4 book ai didi

c# - 使用 ListView/DataPager 返回页面时记住分页

转载 作者:行者123 更新时间:2023-11-30 22:31:54 26 4
gpt4 key购买 nike

我有一个简单的 ListView,由 DataPager 分页,提供产品列表。当我们点击产品时,我们会打开产品详细信息页面。在详细信息页面上,我们希望“返回到产品列表”,但我们当然希望它记住数据分页器所在的页面。

当然,这被认为是一种自然的设计要求 - 什么是简单的开箱即用的方法来做到这一点?

如果我们使用 DataPager 的 QueryStringField 属性,我们会在 URL 中获得页码,所以我希望我可以在反向链接中使用引用 URL,但我发现 Request.UrlReferrer 不可靠(当我使用 F5 来例如,在 Internet Explorer 中调试应用程序,Request.UrlReferrer 始终为空)。

我发现将页码存储在 session 变量中取得了一些成功:

    protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["PagerIndex"] != null)
{
DataPager1.SetPageProperties((int)Session["PagerIndex"],
DataPager1.MaximumRows, false);
}
}
}

protected void DataPager1_PreRender(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
Session["PagerIndex"] = DataPager1.StartRowIndex;
}
}

这种方法有一些缺点:

  1. 仅在 QueryStringField 为空时有效(因此可以检测到 IsPostBack)
  2. 每个寻呼机所需的 session /cookie 变量
  3. 出现了如何重置 session /cookie 变量的问题

执行此操作的“正确”方法是什么?

谢谢

最佳答案

你可以试试我的解决方案将 datapager 的 QueryStringField 属性设置为 querystringfield say page。

 <asp:DataPager ID="DataPager2" runat="server" PagedControlID="ListView1" 
QueryStringField="page">
....

注意:我将 DataPager 放在了 ListView 之外。

将 linkBut​​ton 放在您的 ListView 中,它将您重定向到详细信息页面,并在其点击事件中将当前页码保存在 session 中

 int integ;
decimal fract;
integ = DataPager2.StartRowIndex / DataPager2.PageSize;
fract = (DataPager2.StartRowIndex / DataPager2.PageSize) - integ;
if (fract > 0)
page = integ;
else if (integ > 0) page = integ - 1;
Session["page"]=page;

在详细信息页面上检索页面并将其作为查询字符串传递回 ListViewpage。如果未指定第 1 页,datapager 会自动将您带到该页码。

祝你好运!

关于c# - 使用 ListView/DataPager 返回页面时记住分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com