同じページに2つのDataPagerがあり、同じListViewにリンクされているという問題があります。「下部」または2番目のポケットベルが機能していないように見えることを除いて、すべてが正常に機能します。ページ番号は生成されますが、それらをクリックしても何も起こりません。「上部」ページャーの上に「下部」ページャーをコピーすると、そのページャーは機能しますが、その下のページャーは機能しません。最初に来るポケットベルだけが機能しているようです:
<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();
}
アップデート:
これをもう少しいじくり回した後、SetPagePropertiesに正しいパラメーターがあれば、両方のページャーが機能することを確認しました。最初のパラメーターは結果を開始する数であり、2番目のパラメーターは表示する結果の数である必要があります。ただし、表示する番号が間違っています。正確に100のレコードがあり、1ページに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にバインドする前にページのプロパティを設定することで機能するようになったと思います。