【发布时间】:2012-08-12 09:22:47
【问题描述】:
我有一个包含 ListView 的选项卡控件,有三个选项卡,每个选项卡都包含相同的 ListView,但只要选项卡发生变化,数据源就会更改。
假设有 3 个标签: 表 1:客户 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表示 view/Customers?page=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;
}
}
}
【问题讨论】:
标签: asp.net listview query-string datapager