Metodo DataGridView.Sort (DataGridViewColumn, ListSortDirection)
Assembly: System.Windows.Forms (in system.windows.forms.dll)
public virtual void Sort ( DataGridViewColumn dataGridViewColumn, ListSortDirection direction )
public void Sort ( DataGridViewColumn dataGridViewColumn, ListSortDirection direction )
public function Sort ( dataGridViewColumn : DataGridViewColumn, direction : ListSortDirection )
Parametri
- dataGridViewColumn
Colonna in base alla quale deve essere ordinato il contenuto di DataGridView.
- direction
Uno dei valori di ListSortDirection.
| Tipo di eccezione | Condizione |
|---|---|
| La colonna specificata non fa parte dell'oggetto DataGridView. -oppure- La proprietà DataSource è stata impostata e la proprietà IsDataBound della colonna specificata restituisce false. | |
| dataGridViewColumn è riferimento null (Nothing in Visual Basic). | |
| La proprietà VirtualMode è impostata su true e la proprietà IsDataBound della colonna specificata restituisce false. -oppure- L'oggetto specificato dalla proprietà DataSource non implementa l'interfaccia IBindingList. -oppure- Il valore della proprietà IBindingList.SupportsSorting dell'oggetto specificato dalla proprietà DataSource è false. |
Per ordinare il contenuto di DataGridView, questo metodo effettua un confronto tra i valori nella colonna specificata. Per impostazione predefinita, l'operazione di ordinamento utilizzerà il metodo Compare per confrontare coppie di celle nella colonna mediante la proprietà DataGridViewCell.Value.
Per le colonne la cui proprietà SortMode è impostata su DataGridViewColumnSortMode.Automatic, le proprietà SortedColumn e SortOrder vengono impostate automaticamente e viene visualizzata l'icona di ordinamento appropriata. Per le colonne la cui proprietà SortMode è impostata su DataGridViewColumnSortMode.Programmatic, è necessario visualizzare manualmente l'icona di ordinamento tramite la proprietà DataGridViewColumnHeaderCell.SortGlyphDirection.
È possibile personalizzare l'operazione di ordinamento utilizzata da questo metodo mediante la gestione dell'evento SortCompare. Questo evento si verifica solo se la proprietà DataSource non è stata impostata.
Quando la proprietà DataSource è stata impostata, questo metodo funziona soltanto per le colonne con associazione a dati. Poiché la proprietà DataGridViewColumn.DataPropertyName delle colonne con associazione a dati è impostata, la proprietà DataGridViewColumn.IsDataBound restituisce true.
Se il controllo DataGridView contiene sia colonne associate che colonne non associate, è necessario implementare la modalità virtuale per gestire i valori delle colonne non associate quando il controllo viene ordinato in base a una colonna associata. A questo scopo, è possibile impostare la proprietà VirtualMode su true e gestire l'evento CellValueNeeded. Se la colonna è modificabile, occorre gestire anche l'evento CellValuePushed. Per ulteriori informazioni sulla modalità virtuale, vedere Procedura: implementare il modo virtuale nel controllo DataGridView di Windows Form. Se il controllo è associato ai dati, l'ordinamento in base a colonne non associate non è supportato.
Nell'esempio di codice riportato di seguito viene illustrato come utilizzare Sort in un ordinamento a livello di codice.
private void sortButton_Click(object sender, System.EventArgs e) { // Check which column is selected, otherwise set NewColumn to null. DataGridViewColumn newColumn = dataGridView1.Columns.GetColumnCount( DataGridViewElementStates.Selected) == 1 ? dataGridView1.SelectedColumns[0] : null; DataGridViewColumn oldColumn = dataGridView1.SortedColumn; ListSortDirection direction; // If oldColumn is null, then the DataGridView is not currently sorted. if (oldColumn != null) { // Sort the same column again, reversing the SortOrder. if (oldColumn == newColumn && dataGridView1.SortOrder == SortOrder.Ascending) { direction = ListSortDirection.Descending; } else { // Sort a new column and remove the old SortGlyph. direction = ListSortDirection.Ascending; oldColumn.HeaderCell.SortGlyphDirection = SortOrder.None; } } else { direction = ListSortDirection.Ascending; } // If no column has been selected, display an error dialog box. if (newColumn == null) { MessageBox.Show("Select a single column and try again.", "Error: Invalid Selection", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { dataGridView1.Sort(newColumn, direction); newColumn.HeaderCell.SortGlyphDirection = direction == ListSortDirection.Ascending ? SortOrder.Ascending : SortOrder.Descending; } }
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.