Poblema al borra registro en GridView

10/09/2007 - 21:36 por Ricardo Sotres | Informe spam
Hola

Tengo un Gridview paginado de 10 filas en 10 filas, este grid lo tengo
enlazado a un datatable en memoria osea no graba en la base de datos.

Mi problema viene cuando el usuario quiere borrar un registro en la segunda
pagina por que siempre borra registros de la primera pagina.

Con el codigo que borro es el siguiente:

Protected Sub gvDetallePedido_RowDeleting(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles
gvDetallePedido.RowDeleting

dtPedidoDetalle = CType(Session("dtPedidoDetalle"),
System.Data.DataTable)

dtPedidoDetalle.Rows.Remove(dtPedidoDetalle.Rows(e.RowIndex))

End Sub

lo que e detectado es que e.RowIndex siempre apunta a los primeros 10
registros osea los de la pagina 1, si yo borro por decir el registro 14 el
indice de e.RowIndex apunta al registro 4.

La pregunta es como le hago para detectar que el usuario quiere borrar el
registro 14 y eliminar ese no el registro 4

De antemano muchas gracias
 

Leer las respuestas

#1 Matias Iacono
14/09/2007 - 15:34 | Informe spam
El GridView al manejar paginado, para hacerlo de una forma optima, solo
maneja en memoria los registros mostrados, asi no tiene que cargar, por
ejemplo, si tienes una tabla con 10 mil registros, los 10 mil en memoria y
solo mostrar 10 :D.

Lo ideal seria que veas en la fila, una llave primaria, por ejemplo, la cual
se represente en tu DataTable. Asi buscas este registro en el DT y lo
eliminas.

Otra cosa, no coloques un DT en session, en servidores con mucha
concurrencia podria destruir tu aplicacion :(. Esto debido a que es un objeto
complejo que ocupa mucha memoria. Si a esto le sumas miles de usuarios,
podrias matar el servidor. Lo que se puede hacer es guardar temporalmente
esto en un XML, en el ViewState, o directamente en la base de datos.

Saludos.

Matías Iacono
Microsoft MVP
Orador Regional INETA
http://mvpfiles.spaces.live.com


"Ricardo Sotres" wrote:

Hola

Tengo un Gridview paginado de 10 filas en 10 filas, este grid lo tengo
enlazado a un datatable en memoria osea no graba en la base de datos.

Mi problema viene cuando el usuario quiere borrar un registro en la segunda
pagina por que siempre borra registros de la primera pagina.

Con el codigo que borro es el siguiente:

Protected Sub gvDetallePedido_RowDeleting(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles
gvDetallePedido.RowDeleting

dtPedidoDetalle = CType(Session("dtPedidoDetalle"),
System.Data.DataTable)

dtPedidoDetalle.Rows.Remove(dtPedidoDetalle.Rows(e.RowIndex))

End Sub

lo que e detectado es que e.RowIndex siempre apunta a los primeros 10
registros osea los de la pagina 1, si yo borro por decir el registro 14 el
indice de e.RowIndex apunta al registro 4.

La pregunta es como le hago para detectar que el usuario quiere borrar el
registro 14 y eliminar ese no el registro 4

De antemano muchas gracias







Preguntas similares