none
Tipo de Celda en DataGridView

    Pregunta

  • Hola,

    Alguien podría decirme si es posible tener en una MISMA COLUMNA de un datagridview, donde una fila sea un textbox, otra fila un combobox, pero sobre una misma columna.

    Tengo una grilla donde, dependiendo de la "pregunta" que está haciendo  la columna "A", la "forma" de ingresar datos en la columna "B" puede ser variable. A veces un texto, a veces seleccionar un valor de un combo u otras veces completar una casilla de verificación.

    Si es posible hacerlo, me podrían orientar como?.

    Gracias 


    • Editado Fabian Guidi miércoles, 22 de febrero de 2017 13:51 corrección texto
    miércoles, 22 de febrero de 2017 13:21

Respuestas

  • Hola:

    Puedes hacerlo asignando a cada celda 'su' tipo. Puedes hacerlo de varias formas, pero una manera sería:

    ' En el evento DataBindingComplete del DataGridView pones
    
    For Each oRow In sender.Rows
       Dim cValorColA = oRow.Cells(0).Value.ToString
    
       If cValorColA = "CheckBox" Then
          oRow.Cells(1) = New DataGridViewCheckBoxCell
       ElseIf cValorColA = "ComboBox" Then
          Dim cmb =New DataGridViewComboBoxCell
          cmb.DataSource = <tu lista>
          cmb.ValueMember = ...
          cmb.DisplayMember = ...
          oRow.Cells(1) = cmb
       End If
    Next
    

    Como puedes ver es un codigo ejemplo incompleto, has de 'rellenarlo' según tus necesidades, espero que te sirva.

    Un saludo

    miércoles, 22 de febrero de 2017 14:48

Todas las respuestas

  • Hola:

    Puedes hacerlo asignando a cada celda 'su' tipo. Puedes hacerlo de varias formas, pero una manera sería:

    ' En el evento DataBindingComplete del DataGridView pones
    
    For Each oRow In sender.Rows
       Dim cValorColA = oRow.Cells(0).Value.ToString
    
       If cValorColA = "CheckBox" Then
          oRow.Cells(1) = New DataGridViewCheckBoxCell
       ElseIf cValorColA = "ComboBox" Then
          Dim cmb =New DataGridViewComboBoxCell
          cmb.DataSource = <tu lista>
          cmb.ValueMember = ...
          cmb.DisplayMember = ...
          oRow.Cells(1) = cmb
       End If
    Next
    

    Como puedes ver es un codigo ejemplo incompleto, has de 'rellenarlo' según tus necesidades, espero que te sirva.

    Un saludo

    miércoles, 22 de febrero de 2017 14:48
  • Muchas gracias por tu respuesta.

    Hice las adaptaciones necesarias para mi caso en particular, y funciono perfecto.

    Nuevamente, mil gracias


    Fabian Guidi

    miércoles, 22 de febrero de 2017 15:55