Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

DataGridView.Sort méthode (DataGridViewColumn, ListSortDirection)

 

Date de publication : novembre 2016

Trie le contenu du contrôle DataGridView dans l'ordre croissant ou décroissant en fonction du contenu de la colonne spécifiée.

Espace de noms:   System.Windows.Forms
Assembly:  System.Windows.Forms (dans System.Windows.Forms.dll)

public virtual void Sort(
	DataGridViewColumn dataGridViewColumn,
	ListSortDirection direction
)

Paramètres

dataGridViewColumn
Type: System.Windows.Forms.DataGridViewColumn

Colonne selon laquelle trier le contenu du DataGridView.

direction
Type: System.ComponentModel.ListSortDirection

Une des valeurs de ListSortDirection.

Exception Condition
ArgumentException

La colonne spécifiée ne fait pas partie de ce DataGridView.

ou

La propriété DataSource a été définie et la propriété IsDataBound de la colonne spécifiée retourne false.

ArgumentNullException

dataGridViewColumn a la valeur null.

InvalidOperationException

La propriété VirtualMode a été définie sur true et la propriété IsDataBound de la colonne spécifiée retourne false.

ou

L’objet spécifié par la propriété DataSource n’implémente pas l’interface IBindingList.

ou

L’objet spécifié par la propriété DataSource a une propriété IBindingList.SupportsSorting dont la valeur est false.

Cette méthode trie le contenu de la DataGridView en comparant les valeurs de la colonne spécifiée. Par défaut, l’opération de tri utilisera la Compare méthode pour comparer des paires de cellules dans la colonne à l’aide de la DataGridViewCell.Value propriété.

Pour les colonnes avec le SortMode propriété DataGridViewColumnSortMode.Automatic, SortedColumn et SortOrder propriétés sont définies automatiquement et le glyphe de tri approprié est affiché. Pour les colonnes avec le SortMode propriété DataGridViewColumnSortMode.Programmatic, vous devez afficher le glyphe de tri vous-même via la DataGridViewColumnHeaderCell.SortGlyphDirection propriété.

Vous pouvez personnaliser l’opération de tri utilisée par cette méthode en gérant le SortCompare événement. Cet événement se produit uniquement lorsque le DataSource propriété n’a pas été définie.

Lorsque le DataSource propriété a été définie, cette méthode fonctionne pour les colonnes liées aux données uniquement. Colonnes liées aux données ont leurs DataGridViewColumn.DataPropertyName jeu de propriétés. Cela entraîne le DataGridViewColumn.IsDataBound propriété à retourner true.

Si votre DataGridView contrôle contient des colonnes dépendantes et indépendantes, vous devez implémenter le mode virtuel pour conserver les valeurs des colonnes indépendantes lorsque le contrôle est trié selon une colonne dépendante. Procéder en définissant le VirtualMode propriété true ainsi que la gestion du CellValueNeeded événement. Si la colonne est modifiable, vous devez également gérer les CellValuePushed événement. Pour plus d’informations sur le mode virtuel, consultez Comment : implémenter le mode virtuel dans le contrôle DataGridView Windows Forms. Tri par colonnes indépendantes lorsque le contrôle est lié aux données n’est pas pris en charge.

L’exemple de code suivant montre comment utiliser le Sort dans un tri par programme.

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
Disponible depuis 2.0
Retour au début
Afficher: