Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo DataGridView.Sort (DataGridViewColumn, ListSortDirection)

 

Data di pubblicazione: ottobre 2016

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
)

Parametri

dataGridViewColumn
Type: System.Windows.Forms.DataGridViewColumn

Colonna in base alla quale deve essere ordinato il contenuto di DataGridView.

direction
Type: System.ComponentModel.ListSortDirection

Uno dei valori di ListSortDirection.

Exception Condition
ArgumentException

La colonna specificata non fa parte dell'oggetto DataGridView.

-oppure-

The DataSource property has been set and the IsDataBound property of the specified column returns false.

ArgumentNullException

dataGridViewColumn è null.

InvalidOperationException

La proprietà VirtualMode è stata 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-

L'oggetto specificato dalla proprietà DataSource include un valore false per la proprietà IBindingList.SupportsSorting.

Questo metodo ordina il contenuto del DataGridView confrontando i valori nella colonna specificata. Per impostazione predefinita, l'operazione di ordinamento utilizzerà il Compare metodo per confrontare coppie di celle nella colonna mediante la DataGridViewCell.Value proprietà.

Per le colonne con il SortMode impostata su DataGridViewColumnSortMode.Automatic, SortedColumn e SortOrder vengono impostate automaticamente e viene visualizzata l'icona di ordinamento appropriato. Per le colonne con il SortMode impostata su DataGridViewColumnSortMode.Programmatic, è necessario visualizzare l'icona di ordinamento tramite la DataGridViewColumnHeaderCell.SortGlyphDirection proprietà.

È possibile personalizzare l'operazione di ordinamento utilizzato da questo metodo mediante la gestione di SortCompare eventi. Questo evento si verifica solo quando il DataSource proprietà non è stata impostata.

Quando il DataSource proprietà è stata impostata, questo metodo funziona per solo colonne con associazione a dati. Colonne con associazione a dati loro DataGridViewColumn.DataPropertyName set di proprietà. In questo modo la DataGridViewColumn.IsDataBound proprietà da restituire true.

Se il DataGridView controllo contiene le colonne associate e non, è necessario implementare la modalità virtuale per gestire i valori delle colonne non associate quando il controllo viene ordinato in base a una colonna associata. Tale scopo, è possibile impostare il VirtualMode proprietà true e la gestione di CellValueNeeded eventi. Se la colonna è modificabile, è necessario gestire anche il CellValuePushed evento. Per ulteriori informazioni sulla modalità virtuale, vedere Procedura: implementare il modo virtuale nel controllo DataGridView di Windows Form. Ordinamento colonne non associate quando il controllo è associato a dati non è supportata.

Esempio di codice seguente viene illustrato come utilizzare il 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;
    }
}

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: