none
ASP, Remover fila de Dataview RRS feed

  • Pregunta

  • Buenos días.

    Tengo un Gridview que lo lleno mediante el siguiente codigo

     OraSel = New OracleCommand("SELECT CODIGO_JEFE CODIGO," & _
                                                  "EMP_PRIMER_NOM || ' ' || EMP_SEGUNDO_NOM || ' ' || EMP_PRIMER_APE || ' ' || EMP_SEGUNDO_APE NOMBRE " & _
                                             "FROM DDP_JEFES, " & _
                                                  "PLA_EMP_EMPLEADO " & _
                                            "WHERE CODIGO_JEFE = EMP_CODIGO " & _
                                            "ORDER BY 2", OraConn)
                dgv_Jefes.DataSource = OraSel.ExecuteReader
                dgv_Jefes.DataBind()

    Realizo la consulta y la enlazo al gridview. Hasta ahi todo bien el problema viene cuando quiero borrar una fila de el, tengo el siguiente codigo

     Protected Sub dgv_Jefes_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles dgv_Jefes.RowDeleting
    
            'Apertura de la coneccion a la base de datos
            'Si hay algun error muestra el mensaje
            Try
                OraConnStr = ConfigurationManager.ConnectionStrings(Application("SOC").ToString)
                OraConn = New OracleConnection(OraConnStr.ToString)
                OraConn.Open()
            Catch ex As Exception
                Response.Write("No se puedo abrir la coneccion a la base de datos")
            End Try
    
            'Elimanacion del empleado de la tabla de jefes
            Try
                OraSel = New OracleCommand("DELETE FROM DDP_JEFES WHERE CODIGO_JEFE = " + dgv_Jefes.Rows(e.RowIndex).Cells(0).Text, OraConn)
                OraSel.ExecuteNonQuery()
    
    
                dgv_Jefes.DeleteRow(e.RowIndex)
                dgv_Jefes.DataBind()
    
            Catch ex As Exception
                Response.Write("Error: No se pudo eliminar el Jefe")
            End Try
    
    
        End Sub

    El problema esta que queda como en un ciclo cuando ejecuta la linea de DeleteRow y por ende no me borra nada, Lo que quisiera es que se borrara la fila y se reflejara el el gridview, este esta dentro de un UpdataPanel

    Saludos

    miércoles, 22 de febrero de 2017 18:07

Respuestas

  • El problema esta que queda como en un ciclo


    Claro que se queda en un ciclo. El evento RowDeleting se dispara cuando borras una fila. Si dentro del RowDeleting llamas a DeleteRow, pues entonces borras otra vez, con lo que se vuelve a disparar el DowDeleting, y así sucesivamente.

    Se supone que el RowDeleting se dispara porque ANTES en algún otro sitio se ha producido un DeleteRow. Eso ocasiona que se dispare el RowDeleting, y lo puedes usar, por ejemplo, para propagar el borrado a la base de datos (como estás haciendo). Pero no tienes que llamar a DeleteRow, se supone que esa llamada ya ocurrió en el sitio desde el que inicialmente se desencadenó el RowDeleting.

    Para actualizar los datos en pantalla, después de borrar los datos en la base de datos vuelve a llamar al Fill del dataset que está vinculado al grid, y vuélvele a hacer el DataBind. En otras palabras, sustituye la llamada a DeleteRow por una llamada a Fill.

    • Marcado como respuesta ronal vasquez miércoles, 22 de febrero de 2017 18:59
    miércoles, 22 de febrero de 2017 18:56

Todas las respuestas

  • El problema esta que queda como en un ciclo


    Claro que se queda en un ciclo. El evento RowDeleting se dispara cuando borras una fila. Si dentro del RowDeleting llamas a DeleteRow, pues entonces borras otra vez, con lo que se vuelve a disparar el DowDeleting, y así sucesivamente.

    Se supone que el RowDeleting se dispara porque ANTES en algún otro sitio se ha producido un DeleteRow. Eso ocasiona que se dispare el RowDeleting, y lo puedes usar, por ejemplo, para propagar el borrado a la base de datos (como estás haciendo). Pero no tienes que llamar a DeleteRow, se supone que esa llamada ya ocurrió en el sitio desde el que inicialmente se desencadenó el RowDeleting.

    Para actualizar los datos en pantalla, después de borrar los datos en la base de datos vuelve a llamar al Fill del dataset que está vinculado al grid, y vuélvele a hacer el DataBind. En otras palabras, sustituye la llamada a DeleteRow por una llamada a Fill.

    • Marcado como respuesta ronal vasquez miércoles, 22 de febrero de 2017 18:59
    miércoles, 22 de febrero de 2017 18:56
  • Es lo que estaba pensando, volver a llenar el grid.

    Gracias por tu respuesta, lo hare de esa manera.

    saludos

    miércoles, 22 de febrero de 2017 18:59