我遇到了一个问题,我在同一页面上有两个DataPagers,链接到同一个ListView。一切工作正常,除了“底部”或第二个传呼机似乎没有工作。生成页码,但点击它们什么也不做。如果我将“底部”寻呼机复制到“顶部”寻呼机的上方,那么该寻呼机将起作用,但下面的寻呼机不起作用。似乎只有至上寻呼机似乎工作:同一页面上的多个DataPagers
<asp:DataPager ID="dpPagerTop" runat="server" PagedControlID="lvOutput" QueryStringField="pageNumber">
<Fields>
<asp:NumericPagerField NextPageText="Next" PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
<asp:DataPager ID="dpPagerBottom" runat="server" PagedControlID="lvOutput" QueryStringField="pageNumber">
<Fields>
<asp:NumericPagerField NextPageText="Next" PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
<asp:ListView ID="lvOutput" runat="server" OnPagePropertiesChanged="lvOutput_PagePropertiesChanged">
<LayoutTemplate>
<asp:PlaceHolder id="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<a href="<%# Eval("Link") %>" title="<%# Eval("Title") %>"><%# Eval("Title") %></a>
</ItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dpPagerTop.SetPageProperties(Request.QueryString["pageNumber"].ToString(), 25, false);
dpPagerBottom.SetPageProperties(Request.QueryString["pageNumber"].ToString(), 25, false);
lvOutput.DataSource = [datasource];
lvOutput.DataBind();
}
}
protected void lvOutput_PagePropertiesChanged(object sender, EventArgs e)
{
lvOutput.DataBind();
}
UPDATE:
这个鬼混多一些之后,我决定,如果SetPageProperties具有正确的参数都寻呼机会工作。第一个参数应该是开始结果的数字,第二个参数应该是要显示的结果数量。但是,我收到错误的数字显示。我有100条记录,我想每页显示25条结果。如果我硬编码:
dpPagerTop.SetPageProperties(25, 25, true);
dpPagerBottom.SetPageProperties(25, 25, true);
这应该是结果的第2页,结果表明26-50。但是,底部寻呼机不起作用。现在
,如果我硬编码:
dpPagerTop.SetPageProperties(26, 25, true);
dpPagerBottom.SetPageProperties(26, 25, true);
两个传呼机的工作方式类似于应该,但结果的数量从27-51去。
任何人都可以重新创建它,这会让我疯狂吗?!?!?
更新2:
我想我得到了它之前已经被绑定到ListView设置页面属性的工作。
为什么你有2个传呼机的1个列表视图? – cptScarlet 2009-09-15 19:31:51
结果列表可能比较长(用户可以选择每页25,50,100个结果),并且我在结果列表的顶部和底部分页。 – 2009-09-15 19:38:51