在不使用DataPager的QueryString(ListView ASP.NET)的情况下确定当前页面

时间:2012-08-16 03:06:16

标签: asp.net listview query-string datapager

我有一个包含ListView的Tab控件,有三个Tabs,每个选项卡包含相同的ListView,但只要选项卡chagnes就会更改数据源。

让我们说有3个标签: Tab1:客户 Tab2:项目 Tab3:订单

当我使用DataPager时出现问题。 (上一页 1 2 3 4 5 6 ... 下一步) DataPager使用QueryString:

<asp:DataPager runat="server" ID="DataPager1" PagedControlID="ListView1" PageSize="5"     QueryStringField="page"  OnPreRender="Pager_PreRender" >
    <Fields>
        <asp:NextPreviousPagerField ButtonType="Button" PreviousPageText="Previous" />
        <asp:NumericPagerField ButtonType="Link" ButtonCount="10" />
        <asp:NextPreviousPagerField ButtonType="Button" NextPageText="Next" />
    </Fields>
</asp:DataPager>

这会产生以下网址:

http:// localhost / MyProject / view / Customers?page = 1

假设我在 Tab3:Orders ,如果我导航到下一页,则会发生回发,而 Tab1:Customers 则会显示,这是因为该URL表示查看/客户?页面= 1 无论如何都不使用QueryString实现分页?

这是我使用QueryString的地方:

    protected void Pager_PreRender(object sender, EventArgs e)
    {
        int CurrentPage = 0;
        Int32.TryParse(Request.QueryString["page"], out CurrentPage);
        CurrentPage = CurrentPage.Equals(0) ? 1 : CurrentPage;

        HyperLink PreviousLink = DataPager1.Controls[0].Controls[0] as HyperLink;
        HyperLink NextLink = DataPager1.Controls[2].Controls[0] as HyperLink;
        if (PreviousLink != null)
        {
            if (CurrentPage.Equals(1))
            {
                PreviousLink.Visible = false;
            }
            else if (CurrentPage > 1)
            {
                PreviousLink.Visible = true;
            }
        }
        if (NextLink != null)
        {
            if ((CurrentPage * DataPager1.PageSize) >= DataPager1.TotalRowCount)
            {
                NextLink.Visible = false;
            }
            else
            {
                NextLink.Visible = true;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以使用分页数据集并使用隐藏字段来存储页面索引。刚刚在另一个答案中解释......

Custom datatable with paging

有意义吗?