私はDataPagerでListViewを持っています。 ListViewはコードビハインドのDataTableにバインドされています。不正なStartRowIndexを返すASP DataPager
ページャに10ページのリンクが表示され、10ページ以上のデータがあるとします。それらの11個のボタン(10ページと11ページを指すオーバーフロー楕円)は正常に機能します。 [Next]と[Previous]のリンクも正常に動作します。
私は省略記号をクリックして、11ページに行くしかし、一度、リンクがまだページの最初のページからのオフセットを指します。つまり、ページ12をクリックすると、ページ3(ページ1は新しいページ10の楕円、ページ2はページ11)にダンプされます。次と前のリンクと他のすべての数値リンクと同じです。ブラウザのコンソールにコードを見てみると
、それが印刷ページの各ページへのリンク__doPostBackの呼び出しで同じ引数を作業していても(他の人の)ページャのように見えます。だから、私はページャの全体的なオフセットをどのように保持しているのか分かりません。ページの各ページは、それ自身に相対的なオフセットを与えるからです。
DataSourceID属性のデータソースではなく、コードビハインドのDataTableにListViewをバインドする以外に、私は他の人とは違ったやり方をしています。しかし、ページャはページの最初のページを適切にページ付けするので、私はそれを捨ててしまうのは私のバインディングだとは思わない。
<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>
。 e.StartRowIndexを見ると
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();
}
も(10の項目/ページ@、「20」を返しますすなわち。12ページ)高のページのページのオフセットの最初のページが表示されます。