La pagination ne fonctionne pas dans asp.net gridview à l'intérieur de l'AJAX updatepanel

J'ai un asp.net gridview qui est à l'origine lié à un contrôle sqldatasource, mais lorsque l'utilisateur appuie sur un bouton externe, il récupère le contenu d'un datatable plutôt que d'un contrôle SQLdatasource. J'ai donc dû écrire du code dans le PageIndexChanging cas de la gridview pour permettre l'échange. Mon code est comme suit:

Protected Sub gvEvents_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvEvents.PageIndexChanging

gvEvents.PageIndex = e.NewPageIndex

gvEvents.DataBind()

Cela a fonctionné à merveille jusqu'à ce que j'ai ajouté un AJAX panneau de mise à jour de sorte que la page entière ne serait pas de publication à chaque fois qu'il paginée, et la pagination de l'arrêt de travail. J'ai débogué et découvrit qu'il est fait appel de la PageIndexChanging événement, mais rien ne se passe.

J'ai cherché sur le web et trouvé un peu de gens avec le même problème, mais leurs solutions n'ont pas fonctionné pour moi. Il y en avait un sur ce site dont le problème a été résolu par le texte suivant:

Dans PageIndexchanging événement, où vous lier les données de la grille, assurez-vous, les données sont encore lues à partir de la DB

Je ne sais pas ce que cela signifie; mes données ont été liés comme démontré ci-dessus. J'ai "activer la pagination" true et EnableSortingAndPagingCallbacks définie sur false.

Je serais vraiment reconnaissant si quelqu'un peut m'aider. Je suis à mes, y compris le balisage de l'updatepanel ci-dessous. Merci beaucoup!

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ibtnSearch" />           
</Triggers>
<ContentTemplate>
<asp:GridView ID="gvEvents" runat="server"  DataKeyNames = "intID"
AutoGenerateColumns="False" AllowPaging="True" GridLines="None" CellPadding="10" 
ForeColor="#333333" PageSize="6" DataSourceID="defaultDS" >
<RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
<Columns>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<!-- put code block inside label? To set the formatter to include year if 
it's next year? -->
<asp:Label ID="Label1" runat="server" 
Text = '<%# RepeatingMethods.DetermineOngoing(CType(Eval("dtmEventStartDate"), DateTime) , CType(Eval("dtmEventEndDate"), DateTime))%>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("chvAgeRange")  %>'> </asp:Label> <br />
<asp:Label ID="Label3" runat="server" Text= '<%# Eval("chvState")  %>'> </asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField DataNavigateUrlFields="intId" 
DataNavigateUrlFormatString="EventDetail.aspx?intId={0}" 
DataTextField="chvEventName" />
<asp:BoundField DataField="chvBriefDescription" HeaderText="Description" 
SortExpression="chvBriefDescription" />
</Columns>
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
<FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></FooterStyle>
<PagerStyle HorizontalAlign="Center" BackColor="#FFCC66" ForeColor="#333333"></PagerStyle>
<SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy"></SelectedRowStyle>
<HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White"></HeaderStyle>
<AlternatingRowStyle BackColor="White"></AlternatingRowStyle>
</asp:GridView>
<asp:Label ID="lblError" runat="server"></asp:Label>
<br />
</ContentTemplate>
</asp:UpdatePanel>
Je ne peux même pas voir votre source de données de code.
Voici une partie de celui-ci (c'est une longue sub - je ne peux pas tout mettre dans) searchConnection.Open() searchCommand = New SqlCommand(searchString, searchConnection) searchAdapter = New SqlDataAdapter(searchCommand) searchDatatable = New DataTable searchAdapter.De remplissage(searchDatatable) Si searchDatatable.Les lignes.Count > 0 then gvEvents.DataSourceID = Rien gvEvents.DataSource = searchDatatable gvEvents.DataBind()

OriginalL'auteur | 2009-08-27