Comment puis-je désactiver le tri dans DataGridView
? Je dois désactiver le tri de l'entête DataGridView
.
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
Si vous voulez que les colonnes ne puissent pas être triées statiquement. Tu peux faire comme ça
Utilisez LINQ:
Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
C'est très simple:
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
Vous pouvez le désactiver dans l'événement ColumnAdded:
private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
Pour étendre les fonctionnalités de contrôle de ce type, j'aime utiliser des méthodes d'extension pour pouvoir les réutiliser facilement. Voici un fichier d'extensions de démarrage contenant une extension permettant de désactiver le tri sur un datagridview.
Pour l'utiliser, il suffit de l'inclure dans votre projet et d'appeler comme ceci
myDatagridView.DisableSorting ()
Dans mon cas, j'ai ajouté cette ligne de code dans le gestionnaire d'événements DataBindingComplete de DataGridView où je voulais que le tri soit désactivé.
Imports System.ComponentModel
Imports System.Reflection
Imports System.Runtime.CompilerServices
Imports System.Windows.Forms
Public Module Extensions
<Extension()>
Public Sub DisableSorting(datagrid As DataGridView)
For index = 0 To datagrid.Columns.Count - 1
datagrid.Columns(index).SortMode = DataGridViewColumnSortMode.NotSortable
Next
End Sub
End Module
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
}
}
Si vous pouvez étendre DataGridView, vous pouvez remplacer la méthode Sort
par une méthode vide. Cela désactive complètement le tri de DataGridView.
public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
//base.Sort(dataGridViewColumn, direction);
}
Remarque: vous ne pouvez même pas trier par programme aucune colonne.