none
Insertar columna ComboBox en un Datagridview RRS feed

  • Pregunta

  • Buenos días, llevo horas intentando una solución y consultados un buen número de posts, sin ningún resultado hasta el momento.

    En tiempo de ejecución, generado un datgridview y conformadas las propiedades de las columnas, quiero sustituir una columna tipo TextBox por una tipo ComboBox. Elimino una determinada columna y a continuación inserto la que le sustituye. La columna se inserta correctamente en su posición, propiedades encabezado, ancho, etc., las asume bien, pero el combo no despliega ningún ítem y no toma el color indicado, según el código a continuación.

    He publicado este tema hace unas horas, pero, por alguna razón que desconozco, no lo veo. Mis disculpas si lo duplico.

    Saludos

                'Elimino la columna

                dgv.Columns.Remove("Grid_01")

                'column es del tipo New DataGridViewComboBoxColumn

                With column

                    'Verificado aquí que DataTable (dt) existe y el nombre de los campos

                    .DataSource = dt

                    .DisplayMember = "Campo"

                    .ValueMember = "IDcampo"

                    .AutoComplete = True

                    .FlatStyle = FlatStyle.Flat

                    .DefaultCellStyle.BackColor = Color.Cyan

                    .HeaderText = "Header_01"

                    .CellTemplate = New DataGridViewComboBoxCell

                    .Visible = True

                    .Width = 120

                    . 'Otras propiedades

                End With

                'Inserto la columna combo en su lugar

                dgv.Columns.Insert(1, column)

    domingo, 15 de noviembre de 2015 10:02

Respuestas

  • Realiza el binding luego del Insert de la columna

            'Inserto la columna combo en su lugar
            dgv.Columns.Insert(1, column)
            With column
                .DataSource = dt
                .DisplayMember = "Campo"
                .ValueMember = "IDcampo"
            End With
    

    • Marcado como respuesta aringo domingo, 15 de noviembre de 2015 11:04
    domingo, 15 de noviembre de 2015 10:49

Todas las respuestas

  • Realiza el binding luego del Insert de la columna

            'Inserto la columna combo en su lugar
            dgv.Columns.Insert(1, column)
            With column
                .DataSource = dt
                .DisplayMember = "Campo"
                .ValueMember = "IDcampo"
            End With
    

    • Marcado como respuesta aringo domingo, 15 de noviembre de 2015 11:04
    domingo, 15 de noviembre de 2015 10:49
  • Perfecto!. Gracias, despliega correctamente los ítems

    Alguna sugerencia sobre el color de fondo?. Sigue manteniendo el color por defecto

    Saludos

    domingo, 15 de noviembre de 2015 11:07
  • Por si alguien pudiera necesitarlo más adelante. Encontrado el problema del color

    Va en la misma dirección que la solución para lo anterior, hay que colocarlo después de insertar la columna

    'Inserto la columna combo en su lugar dgv.Columns.Insert(1, column) With column .DataSource = dt .DisplayMember = "Campo" .ValueMember = "IDcampo"

    .FlatStyle = FlatStyle.Flat

    .DefaultCellStyle.BackColor = Color.Cyan End With

    domingo, 15 de noviembre de 2015 14:43