Ich habe einen ListView mit einem DataPager. Der ListView ist im Code-Behind an eine DataTable gebunden.ASP DataPager gibt einen falschen StartRowIndex zurück
Also sagen wir, dass ich den Pager 10 Seiten-Links anzeigen lasse und ich habe mehr als 10 Seiten Daten. Diese 11 Tasten (die 10 Seiten plus die Überlaufellipse, die auf Seite 11 zeigen) funktionieren gut. Die Links Next und Previous funktionieren ebenfalls gut.
aber sobald ich auf die Ellipsen klicken und gehen Sie auf Seite 11, zeigen die Links noch zu Verschiebungen von der ersten Seite der Seiten. Das heißt, das Klicken auf Seite 12 bringt mich auf Seite 3 zurck (Seite 1 ist die neue Seite 10 Ellipsen, Seite 2 ist Seite 11). Das gleiche gilt für die Links Next und Previous und alle anderen numerischen Links.
im Browser-Konsole auf den Code sucht, sieht es wie auch (andere Menschen) Pagers, die für jede Seite von Seiten gedruckt werden die gleichen Argumente in den Links' __doPostBack Ruf arbeiten. Ich bin mir also nicht sicher, wie der Pager seinen Gesamtversatz beibehält, da jede Seite nur Versatzwerte zu sich selbst liefert.
Ich bin wirklich ratlos für das, was ich anders mache als andere Leute, abgesehen von der Bindung meiner ListView an eine DataTable in der Code-behind eher als eine Datenquelle in der DataSourceID Attribut. Aber der Pager paginiert richtig für die erste Seite der Seiten, also glaube ich nicht, dass es nur meine Bindung ist, die es abwirft.
<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();
}
bei e.StartRowIndex Blick zeigt auch die erste Seite des Offsets Seite für höhere Seiten (dh. Seite 12 wird „20“, @ 10 Artikel/Seite zurück).