Tengo un DataGridView con una columna de casilla de verificación. Estoy intentando crear un botón de seleccionar/deseleccionar todo. El código para cambiar los valores es bastante fácil, pero el rendimiento es horrendo.Casilla de casilla de verificación DataGridView "seleccionar todo" rendimiento
for (int i = 0; i < dgv.RowCount; i++)
{
dgv.Rows[i].Cells["Selected"].Value = _selectAll;
}
_selectAll es simplemente un toggle bool variable. ¿Hay una mejor manera de hacer esto donde el rendimiento es rápido? También intenté cambiar el valor en la DataTable subyacente. Todavía toma varios segundos para unas pocas cientos filas, pero la mayoría del trabajo se realizará en miles de filas.
EDITAR & SOLUCIÓN (2011/10/4)
El problema principal era en las propiedades DGV. Una vez me puse,
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
rendimiento mejorado de manera espectacular (por MSDN DataGridView Performance). Las soluciones sugeridas a partir de esta edición también mejorarían ligeramente el rendimiento.
Intente acceder a la columna por índice en lugar de por nombre. p.ej. 'dgv.Rows [i] .Cells [1] .Value = _selectAll;' –
¿Tiene una cuadrícula limitada a cualquier propiedad o simplemente proporcionándola desde el código? –
¿Estás seguro de que es donde está el cuello de la botella? Yo pienso que está en otro lado. –