De tout ce que j'ai lu, il semblait que l'ajout de pagination à un contrôle ListView devrait être simple, mais cela ne fonctionne pas pour moi. Après avoir ajouté les contrôles ListView et DataPager au formulaire et les avoir câblés ensemble, j'ai un comportement très étrange. Le DataPager limite correctement la taille de la page ListView, mais en cliquant sur les boutons de pagination n'affecte pas le ListView du tout. Les boutons de pagination semblent penser qu'ils font leur travail, car le dernier bouton est désactivé quand vous allez à la dernière page, etc., mais le ListView ne change jamais. En outre, il faut deux clics sur le DataPager pour l'obliger à faire quoi que ce soit, c'est-à-dire cliquer une fois sur Last ne fait rien, mais cliquer une seconde fois provoque le DataPager à réagir comme si la dernière page est maintenant sélectionnée. La seule chose que je peux penser est que je lie la DataSource à l'exécution (à un objet LINQ), n'utilisant pas un contrôle LinqDataSource ou quoi que ce soit. Quelqu'un at-il vu ce comportement? Est-ce que je fais quelque chose de mal? Voici le code que je utilise:ListView avec DataPager ne fonctionne pas
<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>
Dans le 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
Vous n'êtes pas obligé de Databind il * nouveau *. Mais oui, vous pouvez résoudre ce problème par liaison de données dans le prerender. –
C'est la chose la plus stupide que j'ai jamais vue depuis ASP.net (même si je suis sûr qu'il y a pire). Mais merci de le trouver. Je n'ai jamais pensé qu'il y aurait un bug pre_render. – Dexter
@Syam quand j'utilise le remplacement de pré-rendu, la source de données listView est nulle (en cliquant sur le bouton suivant) et aucun enregistrement n'est affiché ... des suppositions? – tariq