web-dev-qa-db-de.com

So deaktivieren Sie die Sortierung in DataGridView

Wie kann ich die Sortierung in DataGridView deaktivieren? Ich muss die Kopfzeile DataGridView Sortierung deaktivieren.

50
Gold
foreach (DataGridViewColumn column in dataGridView.Columns)
{
    column.SortMode = DataGridViewColumnSortMode.NotSortable;
}
63
hunter

Wenn Sie statisch Spalten nicht sortierbar machen möchten. Das kannst du so machen

  1. Öffnen Sie die EditColumns-Fenster des DatagridView-Steuerelements2. Wählen Sie im linken Seitenbereich die Spalte aus, die Sie nicht sortierbar machen möchten
  2. Wählen Sie im Eigenschaftsbereich auf der rechten Seite die Eigenschaft Sortiermodus und dann die Option Nicht sortierbar aus.
16

Verwenden Sie LINQ:

Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable);
14
Co. Aden

Es ist sehr einfach:

foreach (DataGridViewColumn dgvc in dataGridView1.Columns)
{
    dgvc.SortMode = DataGridViewColumnSortMode.NotSortable;
}
5
Dara.Joukar

Sie können es im ColumnAdded-Ereignis deaktivieren:

private void dataGridView1_ColumnAdded(object sender, DataGridViewColumnEventArgs e)
{
    dataGridView1.Columns[e.Column.Index].SortMode = DataGridViewColumnSortMode.NotSortable;
}
0
Deepak

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
0
Scope Creep
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
      for (int i = 0; i < dataGridView1.Columns.Count; i++)
      {
           dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
      }
}
0
Fatih Gurbuz

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.

0
bansi