DataGridView con DataGridViewComboBoxColumns se llena la selección después de ordenar
Tengo un DataGridView que está vinculado a un resultado SQL. Luego agrego manualmente tres DataGridViewComboBoxColumns, que se llenan con resultados SQL correspondientes.
Cuando se elige una entrada de cada una de las DataGridViewComboBoxCells, el ValueMember se guarda en la base de datos.
Tan pronto como se agregan las DataGridViewComboBoxColumns, se llama a una función de preselección que lee los valores seleccionados de la base de datos para siempre ver el último estado.
Hasta ahora todo funciona según lo esperado. El problema es que, tan pronto como ordeno el DataGridView haciendo clic en cualquier encabezado de columna, las DataGridViewComboBoxCells ya no están preseleccionadas.
Entonces, pensé que al agregar un controlador de evento .Sorted que llama a mi función de preselección resolvería este problema. Pero la selección ya no se realiza.
C#
C#
function PreselectComboBoxes(int IdJob) {
foreach (DataGridViewRow row in dataGridViewHotels.Rows)
{
... // iteración a través de todas las filas y establecer el valor leído de la base de datos leyendo el número de ID de la primera columna
}
}
Como el ID de la base de datos se puede leer directamente de la fila, no entiendo por qué no funciona de esta manera.
Gracias de antemano por cualquier idea.
davy.ai
Parece que el problema ocurre porque al ordenar el
DataGridView
se vuelve a cargar los datos y se reinician los valores seleccionados para lasDataGridViewComboBoxCells
.Una solución a este problema es manejar el evento
DataBindingComplete
delDataGridView
en lugar del eventoSorted
. Este evento se dispara después de que los datos se enlazan alDataGridView
, incluido después de un evento de ordenamiento.C#
void dataGridViewHotels_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
PreseleccionarComboBoxes(IdJob);
}
Al manejar este evento y llamar a la función
PreseleccionarComboBoxes
, los valores seleccionados para lasDataGridViewComboBoxCells
deberían restaurarse después de cualquier ordenamiento de datos.¡Espero que esto ayude!