我遇到了一個問題,我在同一頁面上有兩個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