Tengo una aspx.Page que contiene una vista de cuadrícula. La vista de cuadrícula está ligada en el código subyacente a una fuente de datos solo cuando no se lleva a cabo la devolución de datos y tiene enableviewstate = true (La página también). Durante una devolución de datos, los datos vinculados a la vista de cuadrícula se pierden. Cuál podría ser la razón. Por favor, pregunte si el código es necesario.GridView pierde datos durante la devolución
Respuesta
Resuelto, el problema fue que hice un Page.Databind() en el evento Page_Load de la página maestra de la página con la vista de cuadrícula, por lo que se vinculó a la vista de cuadrícula durante cada devolución sin datos. Gracias por todos los esfuerzos.
desde la descripción del problema. suena como si estuviera haciendo el enlace de datos en el código detrás. en tal caso, asp.net no conserva la fuente de datos en viewstate por usted. intente recuperar los datos y su almacenamiento en el objeto ViewState tabla hash con algo como ViewState["GridviewData"] = GridviewData
y retreiving desde allí entre las devoluciones de datos
Sí, así es, hago el enlace de datos en el código. – AGuyCalledGerald
¿Estás seguro? Por lo general, puedo usar EnableViewState = true para mantener los datos incluso si están vinculados en código detrás de – AGuyCalledGerald
Te estas perdiendo el concepto aquí. Esta es una pregunta muy elemental que google puede responder por ti.
De todos modos, la cosa es 'DataSource' de todo el control DataBound se comportará como de solo lectura y se leerá cuando necesite vincular el control. Para mantener los datos existentes, necesita de otra forma. Por ejemplo ViewState o Sesión
ViewState es como un bolsillo incrustar a la página. Más grande hará que la carga de la página sea más lenta si es más grande. Los objetos que almacena se serializarán a datos basados en cadenas. Objeto más grande causa un viewstate más grande y un ancho de banda mayor. Tenga en cuenta que el objeto debe ser serializable.
La sesión es como un bolsillo para cada usuario y se queda en el servidor, significa que es más rápido que ViewState. Pero gran sesión de consumirá más MB en la memoria RAM
edición noooo u todavía se equivocaron. Habilitar ViewState no ayuda. Echemos un vistazo a la estructura.
<html>
<head>
</head>
<body>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />
</body>
</html>
la entrada es un ViewState (actual). Cuando configura enable ViewState en WebControls, almacenará 'algunos datos serializables (principalmente de tipo de valor)'. En su caso, GridView.EnableViewState significa que almacenará algunas propiedades en su propia ViewState (lógica), no en la página ViewState.
En código detrás de esto. ViewState ["someName"] = ...; es la página ViewState. Echemos un vistazo al código del lado del servidor.
this.ViewState["someName"] = somDataTable; // this won't work
this.ViewState["someID"] = "abc"; // this work fine
Debido DataTable no hace tiene ISerializable cual estado de vista necesita para convertir cualquier objeto a la base de cuerdas. U podría implementar su propia serilización y asignarla a viewstate, por ejemplo, convertir DataTable en byte [] y asignarlo para ver el estado.
try Sesión en su lugar
Sí, utilizo el atributo EnableViewState para mantener los datos. – AGuyCalledGerald
No, está absolutamente equivocado, funciona bien sin todas sus sugerencias. Por favor, míralo. – AGuyCalledGerald
pronto verá que no funciona. Feliz año nuevo. Ojalá me equivoque – Bonshington
Esto es por diseño. Esta información no se almacena en ningún lugar de forma nativa desde la carga de la página hasta la carga de la página.Tendrá que realizar una de las 3 tareas siguientes:
- almacenar los datos en ViewState (no se recomienda necesariamente si los datos es grande)
- almacenar los datos en un objeto Session (misma historia, datos de gran tamaño es igual mal uso de la memoria)
- hacer un viaje de retorno para volver a vincular los datos cada vez que se carga la página (se descompone si hay demasiada actividad en la base de datos o si la consulta es lento)
Mi preferencia es hacer regresar a la base de datos cuando lo necesite y mantener mi SQL ajustado para el rendimiento. Las pesadas cargas de página son molestas, y demasiada memoria de sesión puede causar ralentización en el servidor. Creo que también puede almacenar esta información en la memoria caché, pero nunca la he intentado, así que no sé cuáles son las limitaciones o las capacidades que existen.
Parece que el enlace de datos de devolución de datos se rompe en este caso (como, parafraseado, "al eliminar el DataBind se lo arregla"). ") .. pero buenas sugerencias sobre el +1. –
Ok, sé que la respuesta es muy tarde, pero acabo de encontrar el mismo problema.
Estaba Databinding cada vez que cargaba la página, y cuando había una publicación, se volvía a consultar la vista de cuadrícula. Pero el uso de:
if(!IsPostBack)
{ //code used to bind on first page load }
en el evento Page_Load parecía haber ayudado :)
muestraEsto funcionará si se usa el control ViewState apropiado. Sin embargo, sin ViewState utilizado, se debe invocar un DataBind en todos los controles aplicables para cada carga de página. –
- 1. selectedIndex se pierde durante las devoluciones de datos - ASP.NET
- 2. Subversion pierde directorios nuevos durante la actualización
- 3. botón TemplateField causando GridView no válida devolución de datos
- 4. ámbito privado miembro de ASP.NET pierde valor en la devolución de datos
- 5. DataBind y devolución de datos
- 6. @ViewScoped Carga de beans administrados muchas veces durante la devolución de datos
- 7. Cómo enlazar DropDownList en Gridview con datos NOT desde gridview
- 8. Mostrar datos de la base de datos SQL en Gridview
- 9. Casilla de verificación en TemplateField en Gridview pierde marcada en postback
- 10. El contenido de GridView desaparece durante el desplazamiento
- 11. Jquery devolución de datos, mantener la misma pestaña después de la devolución de datos
- 12. Viewstate de ascx pierde entre las devoluciones de datos
- 13. GridView no se vuelve a vincular correctamente después de la devolución
- 14. modificar datos de evento durante la propagación
- 15. Restablecer la posición de desplazamiento después de la devolución de datos de Async - ASP.NET
- 16. Forzar devolución de datos completa programáticamente desde UpdatePanel
- 17. columnas dinámicas desaparecen después de la devolución de datos
- 18. 'La operación no es válida debido al estado actual del objeto' error durante la devolución
- 19. ¿Cómo habilitar la clasificación automática de datos IEnumerable en GridView?
- 20. botón sin devolución de datos?
- 21. Viewstate es nulo en la devolución de datos
- 22. Forzar una devolución de datos
- 23. Asp.Net (vb) Forzar devolución de datos en código subyacente
- 24. se el método ClientScriptManager.RegisterForEventValidation para registrar la devolución de datos o los datos de devolución de llamada para la validación
- 25. Deshabilitar un botón dinámico de asp.net haga clic en evento durante la devolución de datos y habilitarlo después
- 26. Mantener posición de la página en la devolución de datos
- 27. asp.net gridview checkbox selection
- 28. Oracle T4CPreparedStatement pierde memoria?
- 29. Copia de una imagen, pierde los datos Exif
- 30. NullReferenceException durante la devolución de llamada de C++ a la función C#
Un código es en la mayor parte del tiempo necesario como una herramienta que facilite a la comunidad para que podamos ser de mejor ayuda. –