Von allem, was ich gelesen habe, schien es, dass das Hinzufügen von Paging zu einem ListView-Steuerelement tot einfach sein sollte, aber es funktioniert nicht für mich. Nachdem ich die ListView- und DataPager-Steuerelemente dem Formular hinzugefügt und sie miteinander verbunden habe, bekomme ich ein sehr merkwürdiges Verhalten. Der DataPager begrenzt die Seitengröße der ListView korrekt, aber das Klicken auf die Paging-Schaltflächen wirkt sich nicht auf die ListView aus. Die Paging-Schaltflächen scheinen zu glauben, dass sie ihren Job machen, da die letzte Schaltfläche deaktiviert ist, wenn Sie zur letzten Seite usw. gehen, aber das ListView ändert sich nie. Außerdem dauert es zwei Klicks auf den DataPager, um irgendetwas zu tun, d. H., Einmal auf Last zu klicken, tut nichts, aber ein zweites Mal bewirkt, dass der DataPager so reagiert, als wäre die letzte Seite jetzt ausgewählt.ListView mit DataPager funktioniert nicht
Das einzige, was mir einfällt, ist, dass ich die DataSource zur Laufzeit binden (an ein LINQ-Objekt), nicht mit einem LinqDataSource-Steuerelement oder irgendetwas. Hat jemand dieses Verhalten gesehen? Mache ich etwas falsch? Hier ist der Code Ich verwende:
<asp:DataPager ID="HistoryDataPager" runat="server" PagedControlID="HistoryListView" PageSize="10">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="true" ShowLastPageButton="true" />
</Fields>
</asp:DataPager>
<asp:ListView ID="HistoryListView" runat="server">
...
</asp:ListView>
Im Code-behind:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
HistoryListView.DataSource = From x in myContext.myTables ...
DataBind()
End If
End Sub
Sie brauchen nicht, es zu Databind * wieder *. Aber ja, Sie können dieses Problem durch Datenbindung im Prerender beheben. –
Das ist die blödeste Sache, die ich jemals von ASP.net gesehen habe (obwohl ich sicher bin, dass es schlimmer ist). Aber danke, dass du es gefunden hast. Ich hätte nie gedacht, dass es einen pre_render Bug geben würde. – Dexter
@Syam Wenn ich die Vor-Render-Überschreibung verwenden überschreibt die ListView-Datenquelle Null (beim Klicken auf nächste Schaltfläche) und dann wird kein Datensatz angezeigt ... irgendwelche Vermutungen? – tariq