Tengo un gridView asp.net que está originalmente vinculado a un control sqldatasource, pero cuando el usuario presiona un botón externo, en su lugar obtiene el contenido de una tabla de datos en lugar de una Control de SQLdatasource Por lo tanto, tuve que escribir código en el evento PageIndexChanging de la vista de cuadrícula para permitir la paginación. Mi código es el siguiente:Paginación que no funciona en gridview asp.net dentro de AJAX updatepanel
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()
Esto funcionó muy bien hasta que he añadido un panel de actualización AJAX para que toda la página no sería la devolución de datos cada vez que paginado, y paginación dejado de funcionar. Lo depuré y descubrí que en realidad está llamando al evento PageIndexChanging, pero nada está sucediendo.
Realicé búsquedas en la Web y encontré algunas personas con el mismo problema, pero sus soluciones no me funcionaron. Había uno en este sitio cuyo problema fue resuelto por el siguiente texto:
En caso PageIndexchanging, donde enlazar datos a la red, asegúrese de que, los datos son de nuevo tomaron de la base de datos
I don' Sé lo que eso significa. mis datos estaban siendo vinculados como se demostró anteriormente. Tengo "enable paging" establecido en true y EnableSortingAndPagingCallbacks establecido en falso.
Realmente agradecería si alguien me puede ayudar. Estoy incluyendo mi marcado para el panel de actualización a continuación. Muchas gracias!
<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>
Ni siquiera puedo ver el código de fuente de datos. –
Aquí es parte de ella (que es un largo sub - No puedo poner todo en) searchConnection.Open() searchCommand = New SqlCommand (searchString que, searchConnection) searchAdapter = New SqlDataAdapter (searchCommand) searchDatatable = Nuevo DataTable searchAdapter.Fill (searchDatatable) Si searchDatatable.Rows.Count> 0 Entonces gvEvents.DataSourceID = Nada gvEvents.DataSource = searchDatatable gvEvents.DataBind() –