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

标签 c# asp.net datapager

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

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

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

我发现将页码存储在 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 变量的问题

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

谢谢

最佳答案

您可以尝试我的解决方案 将数据分页器的 QueryStringField 属性设置为查询字符串字段(例如页面)。

 <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,数据分页器会自动将您带到该页码。

祝你好运!

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

相关文章:

c# - 创建委托(delegate) : 'Cannot bind to the target method because its signature is not compatible with that of the delegate type.'

asp.net - 在 ASP.NET 项目中使用 Twitter Bootstrap

asp.net - 使用 jQuery 和参数在 MVC 中调用操作方法不起作用

css - 样式化 DataPager

C# 文本框删除问题

c# - 默认事件添加/删除实现

asp.net - 从控制台应用程序设置 HttpContext.Current.Application

asp.net - 我如何更改 DataPager 控件中第一个和最后一个按钮的位置

c# - ASP.Net : DataPager Control always a step behind with paging

c# - 如何使用 OAuth 在 C# 中创建新的 Google Drive 服务