Principales respuestas
cambiar campo bit en base de datos al marcar checkbox en datagridview

Pregunta
-
Respuestas
-
Saludos, Este codigo seria en C#, ya tu lo acomodas a VB, es lo mismo.
Programa el evento del datagrid llamado CellContentClick, acá un ejemplo.
En donde estan los comentarios es en donde debes llamar a tus metodos para que se cargue a la base de datos.
private void dataConsultaReportes_CellContentClick(object sender, DataGridViewCellEventArgs e) { int row = e.RowIndex; foreach (DataGridViewRow item in dataConsultaReportes.Rows) { if(row!= item.Index) { dataConsultaReportes.Rows[item.Index].Cells[0].Value = false; // Aca se actualiza en la base de datos para que ponga la bandera en 0 o false. } } if (e.ColumnIndex == dataConsultaReportes.Columns[0].Index) { dataConsultaReportes.EndEdit(); if ((bool)dataConsultaReportes.Rows[e.RowIndex].Cells[0].Value) { // Aca se actualiza en la base de datos para que ponga la bandera en 1 o true. } } }
- Editado Jose Fdo Londoño viernes, 16 de junio de 2017 13:25
- Marcado como respuesta mendy123z viernes, 16 de junio de 2017 21:40
Todas las respuestas
-
Hola mendy123z,
Claro, el campo bit almacena dos valores 0 y 1 (sin contar el NULL).
¿Puedes mostrar el código de como lo estás implementado? Así sería más fácil encontrar el posible error.
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -
SAludos el campo lo muestro sin problemas en el datagrid, la parte que no se como hacer es que al desmarcar por ejemplo una check de una fila, ese dato sea validado directamente al valor del campo en la base de datos. Este es el codigo.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim da As New SqlDataAdapter("select * from estado", con) Dim dt As New DataTable da.Fill(dt) dg.DataSource = dt End Sub Private Sub dg_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles dg.CurrentCellDirtyStateChanged If dg.IsCurrentCellDirty Then dg.CommitEdit(DataGridViewDataErrorContexts.Commit) End If End Sub
La idea es que al marcar la columna tipo check box se desmarque también en la base de datos, con lo que dicho registro quedaría marcado como deshabilitado
Arismendy Rodríguez
-
Saludos, Este codigo seria en C#, ya tu lo acomodas a VB, es lo mismo.
Programa el evento del datagrid llamado CellContentClick, acá un ejemplo.
En donde estan los comentarios es en donde debes llamar a tus metodos para que se cargue a la base de datos.
private void dataConsultaReportes_CellContentClick(object sender, DataGridViewCellEventArgs e) { int row = e.RowIndex; foreach (DataGridViewRow item in dataConsultaReportes.Rows) { if(row!= item.Index) { dataConsultaReportes.Rows[item.Index].Cells[0].Value = false; // Aca se actualiza en la base de datos para que ponga la bandera en 0 o false. } } if (e.ColumnIndex == dataConsultaReportes.Columns[0].Index) { dataConsultaReportes.EndEdit(); if ((bool)dataConsultaReportes.Rows[e.RowIndex].Cells[0].Value) { // Aca se actualiza en la base de datos para que ponga la bandera en 1 o true. } } }
- Editado Jose Fdo Londoño viernes, 16 de junio de 2017 13:25
- Marcado como respuesta mendy123z viernes, 16 de junio de 2017 21:40
-
Por un tema de performance, no sería óptimo que cada vez que tu desmarques o marques viajes a la base de datos. Lo ideal sería que marques o desmarques y con un botón viajes a la base de datos recorriendo las filas y actualizando tu tabla de la BD de esa forma.
Saludos
Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.
- Propuesto como respuesta Joel C. Naupa Crispín viernes, 16 de junio de 2017 21:02
- Votado como útil Joyce_ACModerator lunes, 19 de junio de 2017 17:25
-
Hola mendy123z,
Coincido con Brayan, no sería aconsejable estar haciendo un 'UPDATE' a la base de datos cada vez que se cambie el estado del CheckBox.
¿No puedes utilizar un botón u otro control para Guardar los cambios y en una sola ejecución realizar el 'update' a los campos? E incluso, según el diseño de tu formulario, si no deseas agregar ningún nuevo control podrías 'actualizar' los valores al cerrar ese formulario, ya sea utilizando el evento FormClosed o FormClosing. (Este último se ejecuta cuando se va a cerrar el formulario, ahí podrías lanzar un MessageBox y preguntar si desea conservar los cambios o no).
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI -