Estoy fijando un DataGridViewComboBoxColumn
así:¿Cómo configuro un DataGridView ComboBoxColumn con un DataSource diferente en cada celda?
var newColumn = new DataGridViewComboBoxColumn() {
Name = "abc"
};
newColumn.DataSource = new string[] { "a", "b", "c" };
dgv.Columns.Add(newColumn);
Esto funciona: cada fila tiene un cuadro desplegable en esa columna, poblada con a, b, c.
Sin embargo, ahora me gustaría recortar la lista para ciertas filas. Estoy tratando de establecer la lista por fila como esto:
foreach (DataGridViewRow row in dgv.Rows) {
var cell = (DataGridViewComboBoxCell)(row.Cells["abc"]);
cell.DataSource = new string[] { "a", "c" };
}
Sin embargo, este código no tiene ningún efecto - cada fila sigue mostrando "a", "b", "c".
He intentado reemplazar new string[]
con new List<string>
y new BindingList<string>
, ambos en vano.
También he intentado eliminar el código que establece newColumn.DataSource
, pero las listas están vacías.
¿Cómo debo hacer esto correctamente?
Hmm, eso también funciona para mí, en un proyecto de prueba limpio. Debe ser algo que estoy haciendo de manera diferente ... – Blorgbeard
Bien, el problema tenía que ver con el hecho de que mi DataGridView tenía AutoSizeColumnMode establecido en AllCells. Creo que fue validar los valores de las células antes de que se estableciera su fuente de datos (o algo así). – Blorgbeard
¡Me ayudó con mi problema! – XXXXX