Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   .NET (https://www.clubdelphi.com/foros/forumdisplay.php?f=17)
-   -   ComboBox en grilla filtrado por otra columna (https://www.clubdelphi.com/foros/showthread.php?t=96370)

elrayo76 25-09-2023 14:06:34

ComboBox en grilla filtrado por otra columna
 
Buenos días a todos,

En esta ocación estoy queriendo hacer una columna ComboBox dentro de un Grid de C# (aplicación de escritorio). Como crear la columna he encontrado y se como hacerlo. El problema es que esta columna puede tener distintos valores en la lista del ComboBox en cada fila dependiendo del valor de otra columna que es la que se usa para filtrar el SP que se llama para cargarlo.

Lo que necesito es ver como se hace para que el ComboBox se llene correctamente en el momento que se está cargando la grilla y no al momento de editar la columna que se usa para el filtro que es lo que en todos lados explican.

Ha probado en varios eventos que al parecer se disparan cuando se carga la grilla pero algunos no me ponen la columna, otros no me cambian los valores con el friltro que le paso. El evento que donde pude crear la columna pone siempre los mismos datos en la lista, pero no es lo correcto porque como dije antes, dependiendo del valor de otra columna estos pueden ser distintos.

Uno de los eventos usados fue el "CelValueChanged" este pone la columna pero siempre con los mismos datos.

Saludos,
El Rayo

Casimiro Notevi 25-09-2023 18:42:20

No se entiende bien el problema, los datos que se mostrarán serán los que devuelve la setencia sql utilizada.

elrayo76 25-09-2023 19:07:38

Cita:

Empezado por Casimiro Notevi (Mensaje 552633)
No se entiende bien el problema, los datos que se mostrarán serán los que devuelve la setencia sql utilizada.

Vuelvo a explicar lo que necesito.

Digamos que tengo una primer columna con un código y que la que sigue es la del ComboBox.

Lo que necesito es que al momento que se llena la grilla ese ComboBox no me traiga todos los items de una tabla, sino que traiga los filtrados por ese código. El problema es que ese código puede ser distinto en cada una de las filas. Por esto es que llamo a un SP que por cada fila debería traer los datos que corresponden al código.

El problema no es como mostrar el ComboBox, sino como hacer para que en cada fila quede filtrado el ComboBox. Logro cargar el ComboBox con los datos que me trae el SP, pero cuando se terminan de cargar todas las filas con los datos todos los Combos quedan con los mismos items y no con los que corresponden.

Para cargar los Combos hago algo como lo siguiente. Esto es mas una prueba que otra cosa, porque no se como hacerlo.

Código:

           
            for (nRow = 0; nRow < dgv_Detalles.Rows.Count; nRow++)
            {
                dgv_Detalles.EndEdit();

                DataTable dt;
                // Creo que esto hay que cambiarlo, pero no veo como obtener cada una de las filas al momento que se cargan.
                int rowIndex = dgv_Detalles.Rows.Count - 1;

                dt = new DataTable();
                dt.Columns.Add("nReasonId", typeof(int));
                dt.Columns.Add("sDescript", typeof(string));

                dt.Clear();
                // Obtengo los datos desde un SP.
                dt = reaBlockingReason(getValue(dgv_Detalles.Rows[nRow].Cells["nBranch"].Value, -1)).Copy();

                // "GetComboBoxColum" devuelve el ComboBox configurado con los datos que se le pasa y lo agrega a la columna
                // Parámetros = nombre combo, título columna, Campo código, Campo Descripción, Posición columna, DataTable, ancho.
                dgv_Detalles.Columns.Add(GetComboBoxboColumn("cboMotivos", "Motivo", "nReasonId", "sDescript", 5, dt, 205));
            }

Sacando el for lo mismo lo he puesto en el evento ""CellValueChanged" pero pasa lo mismo que comento. Probe también el evento "RowAdd" pero tampoco funciona.

Saludos,
El Rayo

Casimiro Notevi 25-09-2023 19:57:17

¿Estás usando un dgbrid o un stringgrid?

elrayo76 25-09-2023 20:17:21

Cita:

Empezado por Casimiro Notevi (Mensaje 552643)
¿Estás usando un dgbrid o un stringgrid?

Uso el DataGridView que viene con .NET


La franja horaria es GMT +2. Ahora son las 23:11:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi