Wie kann ich die Sortierung in DataGridView
deaktivieren? Ich muss die Kopfzeile DataGridView
Sortierung deaktivieren.
foreach (DataGridViewColumn column in dataGridView.Columns)
{
column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
Wenn Sie statisch Spalten nicht sortierbar machen möchten. Das kannst du so machen
Verwenden Sie LINQ:
Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
Es ist sehr einfach:
foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
Sie können es im ColumnAdded-Ereignis deaktivieren:
private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
Um die Steuerungsfunktionalität wie diese zu erweitern, benutze ich gerne Erweiterungsmethoden, damit sie leicht wiederverwendet werden kann. Hier ist eine Starter-Erweiterungsdatei, die eine Erweiterung zum Deaktivieren der Sortierung in einem Datenfenster enthält.
Um es zu verwenden, fügen Sie es einfach in Ihr Projekt ein und rufen Sie so an
myDatagridView.DisableSorting ()
In meinem Fall habe ich diese Codezeile im DataBindingComplete-Ereignishandler der DataGridView hinzugefügt, in der die Sortierung deaktiviert werden soll
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;
}
}
Wenn Sie das DataGridView erweitern können, können Sie die Sort
-Methode mit einem leeren überschreiben. Dadurch wird die Sortierung für die DataGridView vollständig deaktiviert.
public override void Sort(DataGridViewColumn dataGridViewColumn, ListSortDirection direction)
{
//base.Sort(dataGridViewColumn, direction);
}
Hinweis: Sie können auch keine Spalte programmgesteuert sortieren.