Visual Basic.NET - Celda tipo Checkbox en Datagridview

   
Vista:

Celda tipo Checkbox en Datagridview

Publicado por Agustin (24 intervenciones) el 14/02/2016 09:39:07
Buenas amigos,

Mi problema es el siguiente:

1-Tengo la siguiente consulta que cargo en un datatable (dtAlmacen):

"SELECT * , 1 as Casilla FROM Pedidos"

2-Añado a un datagridview una columna del tipo data DataGridViewCheckBoxColumn y posteriormente lo cargo con el datatable anterior

Dim columna_Recibidos As New DataGridViewCheckBoxColumn
dgvPedidos.Columns.Add(columna_Recibidos)
dgvPedidos.DataSource = dtAlmacen

3-Asocio la columna cero del datagridview a la columna "Casilla" de la consulta (la cual tiene el valor predeterminado de 1) para que al cargar el datagridview me ponga todos los checkbox de la primera columna en true.

dgvPedidos.Columns(0).DataPropertyName = "Casilla"

Todo esto lo hago en el form_Load del formulario y hasta aquí todo perfecto.

Lo que quiero hacer y no consigo, es que cuando el usuario haga click sobre el checkbox marcado del datagridview se le pregunte mediante un messagebox si quiere desmarcar la casilla. En caso que no acepte el messagebox la casilla vuelva a quedarse marcada. Para ello hago lo siguiente, que repito NO ME FUNCIONA.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub dgvPedidos_CellContentClick(...) Handles dgvPedidos.CellContentClick
	If e.RowIndex >= 0 And e.ColumnIndex = 26 Then (la columna 26 es la correspondiente a la columna "Casilla" la cual está asociada a la columna checkbox que es la cero)
		With dgvPedidos
			Dim value As Boolean = CType(.CurrentCell.EditedFormattedValue, Boolean)
			If value = False Then 'checkbox desmarcado
				Dim inf As DialogResult = MessageBox.Show("¿Desea desmarcar casilla seleccionada?", "Título", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
				If inf = vbOK Then
					...
				Else
					Cancelar_Edicion_dgv = True
					.EndEdit()
				End If
			End If
		End With
	End If
End Sub
 
Private Sub dgvPedidos_CellValueChanged(...) Handles dgvPedidos.CellValueChanged
 
	If Not Iniciando Then
		If Cancelar_Edicion_dgv Then
			Me.dgvPedidos.Rows(dgvPedidos.CurrentRow.Index).Cells(0).Value = False
		End If
	End If
 
End Sub

Lo que me ocurre es que la casilla no se vuelve a marcar, es decir, queda en False y por tanto desmarcada.

Agradecería su ayuda.
Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier Hernandez

Celda tipo Checkbox en Datagridview

Publicado por Javier Hernandez (33 intervenciones) el 16/02/2016 20:44:53
Ya sea que trabajes con Booleano o lo conviertas a INT, el valor de tu columna, podrias hacer lo siguiente para saber el estado y mandar los eventos.

1
2
3
4
5
6
7
8
9
10
11
12
13
Dim row As DataGridViewRow
 
For Each(row in tuDataGridView)
     if row.Cells("Nombre de tu columna").Value = true o 1(En caso de que sea INT) then
 
            Tu Evento
 
    else
 
           Otro Evento
 
    End if
Next


Espero te Sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar