Ho un gridview di asp.net che è originariamente associato a un controllo di sqldatasource, ma quando l'utente preme un pulsante esterno, ottiene invece il contenuto di un datatable piuttosto che un Controllo SQLdatasource. Ho quindi dovuto scrivere codice nell'evento PageIndexChanging di gridview per consentire il paging. Il mio codice è il seguente:Il paging non funziona in asp.net gridview all'interno del pannello di aggiornamento AJAX
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()
questo ha funzionato splendidamente fino a quando ho aggiunto un pannello di aggiornamento AJAX così l'intera pagina non postback ogni volta che paging, e il paging smesso di funzionare. Ho eseguito il debug e ho scoperto che in realtà sta chiamando l'evento PageIndexChanging, ma non succede nulla.
Ho cercato sul Web e ho trovato alcune persone con lo stesso problema, ma le loro soluzioni non funzionavano per me. C'era uno su questo sito il cui problema è stato risolto dal seguente:
Nel caso in PageIndexchanging, in cui si associano i dati alla rete, assicurarsi che i dati è ancora una volta prelevato dal DB
I don' so cosa significa; i miei dati erano vincolati come dimostrato sopra. Ho "abilita il paging" impostato su true e EnableSortingAndPagingCallbacks impostato su false.
Sarei davvero grato se qualcuno mi può aiutare. Sto includendo il mio markup per il pannello di aggiornamento qui sotto. Grazie mille!
<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>
Non riesco nemmeno a vedere il codice dell'origine dati. –
Ecco parte di essa (è una lunga sub - non riesco a mettere tutto in) searchConnection.Open() searchCommand = nuovo SqlCommand (searchString, searchConnection) searchAdapter = nuovo SqlDataAdapter (searchCommand) searchDatatable = Nuovo DataTable searchAdapter.Fill (searchDatatable) Se searchDatatable.Rows.Count> 0 Then gvEvents.DataSourceID = Nothing gvEvents.DataSource = searchDatatable gvEvents.DataBind() –