none
Datagridview con Checkbox Ayuda.. VB.Net RRS feed

  • Pregunta

  • Hola
    Como logro. tener una columna..  Checkbox.
    que su cabecera.. tambien sea un Checkbox. para seleccionar todo..

    Nombe | Apellido | □ | Estado |
     A1           B1          □     P
     A2           B2          □     F
     A3           B3          □     F
     A4           B4          □     P

    este es un ejemplo de lo que quiero obtener..
    gracias..!!

    • Cambiado Enrique M. Montejo sábado, 2 de enero de 2016 16:00 Pregunta relacionada con controles de Windows Forms.
    lunes, 28 de enero de 2013 19:30

Todas las respuestas

  • Hola.

    Si la memoria no me falla el DataGridView no tiene esa propiedad que permita hacer lo que mencionas(Si me estoy equivocando, porfavor hacermela saber, ya que en VB 6.0 se podia similuar, pero en .NET no lo se.):

    Una solución a eso podría ser arrastrar un control CheckBox y en su texto colocar Marcar Todos y entonces si das check sobre el control, se marcan todas las columnas del DataGridView, si desmarcas el check de todos, se desmarcan el check de las columnas del datagridView.

    Algo asi:

       Private Sub cbxMarcar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbxMarcar.Click
            If Me.cbxMarcar.Checked = True Then
                For i = 0 To Me.dgvDatos.Rows.Count - 1
                    Me.dgvDatos.Rows(i).Cells(0).Value = True
                Next
            Else
                For i = 0 To Me.dgvDatos.Rows.Count - 1
                    Me.dgvDatos.Rows(i).Cells(0).Value = False
                Next
            End If
        End Sub
    
    

    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú



    lunes, 28 de enero de 2013 19:43
  • no existe de forma estandar que el header del datagridview tenga un checkbox

    si se logra realziar es por medio de GDI dibujando el control

    How to Add a WinForm DataGridView Header CheckBox

    la clave esta en el CellPainting

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio Parra jueves, 3 de octubre de 2013 4:43
    lunes, 28 de enero de 2013 19:48
  • este es el codigo que uso...

      Private dgvColumnHeader As ClsDgvCheck
      dim dT_PAR  as new datatable

      dgvColumnHeader = New ClsDgvCheck

              dT_PAR = MDLConsultas.Funcion_1("A")

              Dgv1.DataSource = dT_PAR

            Dgv1.Columns.Item(0).Width = 40
            Dgv1.Columns.Item(1).Width = 40
            Dgv1.Columns.Item(2).Width = 40

              Dgv1.Columns.Insert(0, New DataGridViewCheckBoxColumn)
              Dgv1.Columns(0).HeaderCell = dgvColumnHeader

            For i As Integer = 0 To Dgv1.RowCount - 1
                Dgv1.EndEdit()
                Dim re_value As String = Dgv1.Rows(i).Cells(0).EditedFormattedValue.ToString()
                Dgv1.Rows(i).Cells(0).Value = "False"
            Next


    este es el codigo que uso para obtener.. lo que quiero..
    pero hay un problema.. que solo me sale el Checkbox pero en la cabecera..
    pero no en los registros..

    lunes, 28 de enero de 2013 20:04
  • Creo manualmente una columna en DataGridView de tipo CheckBox  sin titulo en la cabecera y luego le arrastro un control CheckBox en La cabecera de la columna y no le ponga nada en la propiedad text del Check y luego en el evento Click del Check escribo el codigo del amigo Luis Muñoz Hidalgo.

     Private Sub cbxMarcar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cbxMarcar.Click
            If Me.cbxMarcar.Checked = True Then
                For i = 0 To Me.dgvDatos.Rows.Count - 1
                    Me.dgvDatos.Rows(i).Cells(0).Value = True
                Next
            Else
                For i = 0 To Me.dgvDatos.Rows.Count - 1
                    Me.dgvDatos.Rows(i).Cells(0).Value = False
                Next
            End If
        End Sub


    jueves, 3 de octubre de 2013 1:31