es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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 las DataGridViewComboBoxCells.

    Una solución a este problema es manejar el evento DataBindingComplete del DataGridView en lugar del evento Sorted. Este evento se dispara después de que los datos se enlazan al DataGridView, 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 las DataGridViewComboBoxCells deberían restaurarse después de cualquier ordenamiento de datos.

    ¡Espero que esto ayude!

Comments are closed.