ASP.net GridView está vacío cuando retrocede o avanza.

tengo un enlace de datos asp:GridView:

<asp:GridView ID="gridUsers" runat="server" ShowHeaderWhenEmpty="True" Width="100%" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
   <Columns>
       <asp:BoundField DataField="UserGUID" HeaderText="UserGUID" SortExpression="UserGUID" Visible="False" />
       <asp:HyperLinkField DataNavigateUrlFields="UserGUID" DataNavigateUrlFormatString="~\UserManagement\UserProperties.aspx?userGuid={0}" DataTextField="Username" HeaderText="User name" SortExpression="Username" />
       <asp:BoundField DataField="Fullname" HeaderText="Full name" SortExpression="Fullname" />
       <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description"/>
       <asp:BoundField DataField="Email" HeaderText="E-mail" SortExpression="Email"/>
       <asp:BoundField DataField="IsActive" HeaderText="Active" SortExpression="IsActive" Visible="False" />
       <asp:BoundField DataField="AuthenticationType" HeaderText="Account type" SortExpression="AuthenticationType" />
    </Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:db %>"
    SelectCommand="SELECT UserGUID, Username, Fullname, Description, Email, IsActive, AuthenticationType FROM Users WHERE IsActive = 1 ORDER BY Username">
</asp:SqlDataSource>

Con el código subyacente correspondiente:

public partial class FooItToHoo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

La cuadrícula se completa correctamente cuando navego a la página:

pero cuando me voy Atrás y entonces HACIA EL FUTURO (o navegue a otra página y vaya Atrás) la cuadrícula está vacía:

Si presiono F5, la página se actualiza y la cuadrícula está presente y completa:

¿Qué estoy haciendo mal?


Noticias: La solicitud inicial de mi página no se almacena en caché; la respuesta del servidor es:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 13 Jun 2012 13:16:32 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 53219
Connection: Close

Con la asp:GridView contenido que se representa in el html servido:

Navegando lejos y luego yendo Regresar, no se realiza ninguna solicitud de servidor; por lo que la página debe ser servida desde el caché.

¿Qué está haciendo ASP.net que la página renderizada contiene contenido, pero la página "en caché" no?

preguntado el 12 de junio de 12 a las 22:06

¿Está accediendo a una versión de caché de su página? tratando de limpiar su caché y volver a ejecutar su prueba. -

2 Respuestas

La razón por la que la cuadrícula se muestra vacía es porque cuando hace clic en el botón Siguiente, no hay una fuente de datos disponible para vincular con la cuadrícula. Así que para esto necesitas

seleccione gridview -> ir a la ventana de propiedades -> haga clic en el botón de eventos

haga doble clic en el evento de cambio de índice de página

y establecer

Allowpaging=true para vista de cuadrícula

en el evento de cambio de índice de página escribe el siguiente código

gridview1.pageindex=e.newpageindex;
//gridbindingcode

gridview1.databind();

Respondido el 24 de Septiembre de 12 a las 17:09

Esto parece ser un problema de caché. elimine el caché de su navegador y use el siguiente código en su página para evitar que su página se almacene en caché.

Las metaetiquetas:

 <meta http-equiv="Expires" CONTENT="0">
 <meta http-equiv="Cache-Control" CONTENT="no-cache">
 <meta http-equiv="Pragma" CONTENT="no-cache">

Y el codigo:

Response.ExpiresAbsolute = DateTime.Now;
Response.Expires = -1441;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.AddHeader("Pragma", "no-store");
Response.AddHeader("cache-control", "no-cache");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoServerCaching();

Respondido el 25 de Septiembre de 12 a las 11:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.