Ho un DataGridView con una colonna checkbox. Sto provando a creare un pulsante seleziona/deseleziona tutto. Il codice per cambiare i valori è abbastanza facile, ma le prestazioni sono orrende.Colonna casella di controllo DataGridView "seleziona tutto" prestazioni
for (int i = 0; i < dgv.RowCount; i++)
{
dgv.Rows[i].Cells["Selected"].Value = _selectAll;
}
_selectAll è semplicemente una variabile bool toggle. C'è un modo migliore per farlo dove le prestazioni sono veloci? Ho provato anche a modificare il valore nel DataTable sottostante. Occorrono ancora alcuni secondi per poche centinaia di righe, ma la maggior parte del lavoro verrà eseguita su migliaia di righe.
EDIT & SOLUZIONE (2011/10/4)
Il problema principale era nelle proprietà DGV. Una volta ho impostato,
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
prestazioni notevolmente migliorate (per MSDN DataGridView Performance). Le soluzioni suggerite in questa modifica migliorerebbero anche leggermente le prestazioni.
Provare ad accedere alla colonna per indice anziché per nome. per esempio. 'dgv.Rows [i] .Cells [1] .Value = _selectAll;' –
Hai una griglia limitata a qualsiasi proprietà o semplicemente la dai dal codice sottostante? –
Sei sicuro che sia qui il collo della bottiglia? Io penso che sia altrove. –