none
Datagridview pierde el formato de las columnas al eliminar fila RRS feed

  • Pregunta

  • Buen dia,

    Estoy tratando de eliminar una fila de un datatable, para despues ese datatable modificado poderlo enviar como datasource a un Datagridview.

    Cuando carga la primera vez el Datagridview, lo hace bien.

    Pero después de eliminar la fila en el datatable, y enviarlo al datasource, las columnas no mantienen el formato que se predetermino inicialmente.

    A Alguien le ha sucedido algo similar, para ver si me pudiera brindar una ayuda.

    Aqui el codigo que se esta utilizando

    Dim DtSolicitudesAsociadas As DataTable = _objSolExterna.GetSolicitudesByEmail(_emailSolicitud, _objGlobal.Tx_CodigoUsuario)
    'Aqui se elimina la fila que se desea, segun su indice
            For Each kvp As KeyValuePair(Of String, Integer) In _dicSolicitudesTramitadas
                DtSolicitudesAsociadas.Rows.RemoveAt(kvp.Value)
            Next

            DtSolicitudesAsociadas.AcceptChanges()

            Dim dcIndice As New DataColumn("Indice", GetType(Integer))
            Dim dcSeleccionar As New DataColumn("Seleccionar", GetType(Boolean))
            Dim dcAdjuntar As New DataColumn("Adjuntar", GetType(String))
            Dim dcArchivoMsgOriginal As New DataColumn("ArchivoMsgOriginal", GetType(String))

            DtSolicitudesAsociadas.Columns.Add(dcIndice)
            DtSolicitudesAsociadas.Columns.Add(dcSeleccionar)
            DtSolicitudesAsociadas.Columns.Add(dcAdjuntar)
            DtSolicitudesAsociadas.Columns.Add(dcArchivoMsgOriginal)


            Dim IndiceEliminar As Integer = 0
            For i As Integer = 0 To DtSolicitudesAsociadas.Rows.Count - 1

                DtSolicitudesAsociadas.Rows(i)("Indice") = i + 1
                DtSolicitudesAsociadas.Rows(i)("Seleccionar") = False
                DtSolicitudesAsociadas.Rows(i)("Adjuntar") = "Adjuntar Archivo"
                DtSolicitudesAsociadas.Rows(i)("ArchivoMsgOriginal") = DtSolicitudesAsociadas.Rows(i)("ArchivoMsgOriginal")
                
            Next

            DtSolicitudesAsociadas.AcceptChanges()

            DgvSolicitudes.DataSource = DtSolicitudesAsociadas
            DgvSolicitudes.Refresh()

    Muchas gracias.

    viernes, 23 de junio de 2017 19:59

Respuestas

  • JC9210,

    En lugar de volver a cargar el DataTable y cargarlo en el DataGridView puedes hacer un casting del DataSource de tu DataGridView como DataTable y desde ahi eliminar la fila. Seria algo asi

    For Each kvp As KeyValuePair(Of String, Integer) In _dicSolicitudesTramitadas CType(DgvSolicitudes.DataSource, DataTable).Rows.RemoveAt(kvp.Value) Next

    De está manera no tienes que volver a recargar la propiedad DataSorce de tu DataGridView
    • Marcado como respuesta JC9210 lunes, 26 de junio de 2017 2:14
    sábado, 24 de junio de 2017 13:36

Todas las respuestas

  • Hola @JC9210

    Pero después de eliminar la fila en el datatable, y enviarlo al datasource, las columnas no mantienen el formato que se predetermino inicialmente.

    Después de eliminar debes volver a dar el formato que se predetermino inicialmente.


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 24 de junio de 2017 12:42
  • JC9210,

    En lugar de volver a cargar el DataTable y cargarlo en el DataGridView puedes hacer un casting del DataSource de tu DataGridView como DataTable y desde ahi eliminar la fila. Seria algo asi

    For Each kvp As KeyValuePair(Of String, Integer) In _dicSolicitudesTramitadas CType(DgvSolicitudes.DataSource, DataTable).Rows.RemoveAt(kvp.Value) Next

    De está manera no tienes que volver a recargar la propiedad DataSorce de tu DataGridView
    • Marcado como respuesta JC9210 lunes, 26 de junio de 2017 2:14
    sábado, 24 de junio de 2017 13:36
  • Muchas gracias, funciono perfecto.
    lunes, 26 de junio de 2017 2:15