Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo DataGridView.Sort (DataGridViewColumn, ListSortDirection)

Nota: questo metodo è stato introdotto con .NET Framework versione 2.0.

Ordina il contenuto del controllo DataGridView in modo crescente o decrescente in base al contenuto della colonna specificata.

Spazio dei nomi: System.Windows.Forms
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 eccezioneCondizione

ArgumentException

La colonna specificata non fa parte dell'oggetto DataGridView.

-oppure-

La proprietà DataSource è stata impostata e la proprietà IsDataBound della colonna specificata restituisce false.

ArgumentNullException

dataGridViewColumn è riferimento null (Nothing in Visual Basic).

InvalidOperationException

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.

.NET Framework

Supportato in: 2.0
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.