我有一個ListView與DataPager。 ListView綁定到代碼隱藏中的DataTable。ASP DataPager返回不正確的StartRowIndex
因此,假設我將傳呼機設置爲顯示10頁鏈接,並且有超過10頁的數據。這11個按鈕(10頁加上指向第11頁的溢出橢圓)工作得很好。 Next和Previous鏈接也可以很好地工作。
但是,一旦我點擊省略號並轉到第11頁,鏈接仍然指向從頁面的第一頁偏移。也就是說,點擊第12頁會在第3頁轉儲我(第1頁是新的第10頁省略號,第2頁是第11頁)。與Next和Previous鏈接以及所有其他數字鏈接相同。
望着在瀏覽器控制檯中的代碼,它看起來像連(其他人的),其正在打印相同的參數中的鏈接__doPostBack呼籲頁每一頁尋呼機。所以,我不確定傳呼機是如何保留它的整體偏移量的,因爲每頁頁面都會給出相對於它們自己的偏移量。
我真的不知道我在做什麼不同於其他人,除了將我的ListView綁定到代碼隱藏中的DataTable而不是DataSourceID屬性中的數據源之外。但是,傳呼機頁面的第一頁正確分頁,所以我不認爲這只是我的約束力,它扔掉了。
<asp:ListView ID="lvProjects" runat="server" GroupPlaceholderID="groupPlaceHolder"
ItemPlaceholderID="itemPlaceHolder" OnPagePropertiesChanging="OnPagePropertiesChanging"
DataKeyNames="ProjectID" OnPreRender="lvProjects_PreRender">
<LayoutTemplate>
<asp:DataPager ID="DataPager" runat="server" PagedControlID="lvProjects" PageSize="10">
<Fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="true" ShowPreviousPageButton="true" ShowNextPageButton="false"
FirstPageText="|<<" PreviousPageText="<" RenderNonBreakingSpacesBetweenControls="true" />
<asp:NumericPagerField ButtonType="Link" ButtonCount="10" RenderNonBreakingSpacesBetweenControls="true" />
<asp:NextPreviousPagerField ButtonType="Link" ShowNextPageButton="true" ShowLastPageButton="true" ShowPreviousPageButton="false"
NextPageText=">" LastPageText=">>|" RenderNonBreakingSpacesBetweenControls="true" />
</Fields>
</asp:DataPager>
<br />
<br />
<table class="myGrid projects-table">
<tbody>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
</asp:ListView>
。
protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
var pager = (DataPager)lvProjects.FindControl("DataPager");
pager.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
lvProjects.DataSource = Projects;
lvProjects.DataBind();
}
看着e.StartRowIndex也將顯示頁面的偏移量較高的頁面的第一頁(即第12頁將返回「20」,@ 10條/頁)。