none
Borrar un registro de un Gridview paginado RRS feed

  • Pregunta

  • Hola a todos.

    Tengo la siguiente duda, como puedo eliminar un registro de mi gridview, que esta paginado?, actualemente mi gridview tiene la opcion de paginado en True, y el maximo de registros por pagina es de 5, cuando quiero eliminar un registro (existiendo solo 5 registros) lo puedo hacer facilmente en el evento GridView_RowDeleting con el e.RowIndex, el problema ocurre cuando existen mas de 5 datos, ya que al pasar a la siguiente pagina el primer elemento tiene el e.RowIndex como cero, y eso es mentira, ya que ese es el elemento numero 6 de mi datasource y al borrar elimina el registro que no se debe,


    Alguien sabe como puedo hacerlo.


    muchas gracias.


    Jorge Molano.

    jin
    jueves, 14 de mayo de 2009 16:31

Todas las respuestas

  • Hola,

    creo saber lo que pasa, al momento de llamar al evento GridView_RowDeleting, el e.RowIndex se refiere al indice de la fila donde estas en ese momento y no al registro que quieres eliminar, me parece que tu estas eliminado el registro con este indice.

    Para obtener los datos del registro que quieres eliminar debes acceder primero a la fila  Dim row =
    GridView .Rows(e.RowIndex)   y luego obtienes los valores de casa celda con row.cells(numero de la celda).text .

    Ahora, existe una mejor manera de hacer esto que es estableciendo el KeyName en la grilla por ejemplo <asp:GridView ID="
    GridView " runat="server"  DataKeyNames="<Nombre de campo ID de tu registro>" AllowPaging="True" PageSize="5"> y para acceder a este dato lo haces así nRegistro = Grid1.DataKeys(e.RowIndex).Value

    Mira este ejemplo

     
    Protected Sub GridView_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView.RowDeleting
            nRegistro = GridView.DataKeys(e.RowIndex).Value        
            objInforme.mtdEliminar(nRegistro)
    
            lblMensaje.Text = "Registro fue Eliminado"
    
            GridView.DataSource = objInforme.mtdObtenerInformacion()
            GridView.EditIndex = -1   
            GridView.DataBind()
    
       
        End Sub
    Espero te sirva

    saludos,

    jueves, 14 de mayo de 2009 19:00
  • Hola Felipe,

    Felipe muchas gracias por tu respuesta me ha servido de maravilla cuando mi ID de mi registro es consecutivo pero cuando mi id no es consecutivo me edita o borra algo que no es, pues me devuelve el id del item asignado al row y en este caso me deberia devolver el id del datasource para poder editarlo.

    Sim embargo muchisimas gracias tu respuesta me ha sido muy beneficiosa en mi desarrollo.


    Jorge Molano.
    jin
    lunes, 6 de julio de 2009 17:05
  • Hola Felipe,

    Felipe muchas gracias por tu respuesta me ha servido de maravilla cuando mi ID de mi registro es consecutivo pero cuando mi id no es consecutivo me edita o borra algo que no es, pues me devuelve el id del item asignado al row y en este caso me deberia devolver el id del datasource para poder editarlo.

    Sim embargo muchisimas gracias tu respuesta me ha sido muy beneficiosa en mi desarrollo.


    Jorge Molano.
    jin
    lunes, 6 de julio de 2009 17:05