Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DataGridView Spalten weisen drei Sortiermodi auf. Der Sortiermodus für jede Spalte wird über die SortMode-Eigenschaft der Spalte angegeben, die auf einen der folgenden DataGridViewColumnSortMode-Aufzählungswerte festgelegt werden kann.
DataGridViewColumnSortMode -Wert |
BESCHREIBUNG |
---|---|
Automatic | Standard für Textfeldspalten. Sofern Spaltenüberschriften nicht für die Auswahl verwendet werden, wird durch Klicken auf die Spaltenüberschrift die DataGridView automatisch nach dieser Spalte sortiert und ein Symbol angezeigt, das die Sortierreihenfolge angibt. |
NotSortable | Standard für Nicht-Textfeldspalten. Sie können diese Spalte programmgesteuert sortieren; allerdings ist die Spalte nicht zum Sortieren gedacht, daher ist kein Platz für das Sortiersymbol reserviert. |
Programmatic | Sie können diese Spalte programmgesteuert sortieren, und es ist Platz für die Sortierglyphe reserviert. |
Möglicherweise möchten Sie den Sortiermodus für eine Spalte ändern, die standardmäßig auf NotSortable festgelegt ist, wenn sie Werte enthält, die sinnvoll sortiert werden können. Wenn Sie beispielsweise eine Datenbankspalte haben, die Zahlen enthält, die Elementzustände darstellen, können Sie diese Zahlen als entsprechende Symbole anzeigen, indem Sie eine Bildspalte an die Datenbankspalte binden. Anschließend können Sie in einem Handler für das DataGridView.CellFormatting-Ereignis die numerischen Zellwerte in Bildanzeigewerte ändern. Wenn Sie in diesem Fall die Eigenschaft SortMode auf Automatic festlegen, können die Benutzer die Spalte sortieren. Mit der automatischen Sortierung können Ihre Benutzer Elemente gruppieren, die denselben Zustand aufweisen, auch wenn die Zustände, die den Zahlen entsprechen, keine natürliche Sequenz aufweisen. Kontrollkästchenspalten sind ein weiteres Beispiel, bei dem die automatische Sortierung für das Gruppieren von Elementen im selben Zustand nützlich ist.
Sie können eine DataGridView programmatisch nach den Werten in einer beliebigen Spalte oder in mehreren Spalten sortieren, unabhängig von den SortMode-Einstellungen. Die programmgesteuerte Sortierung ist nützlich, wenn Sie eine eigene Benutzeroberfläche für die Sortierung bereitstellen oder benutzerdefinierte Sortierung implementieren möchten. Die Bereitstellung einer eigenen Benutzeroberfläche für die Sortierung ist beispielsweise nützlich, wenn Sie den DataGridView-Auswahlmodus festlegen, um die Auswahl von Spaltenüberschriften zu ermöglichen. In diesem Fall können Sie die Spaltenüberschriften zwar nicht für die Sortierung verwenden, aber dennoch sollen die Überschriften die entsprechende Sortierglyphe anzeigen, sodass Sie die Eigenschaft SortMode auf Programmaticfestlegen würden.
Spalten, die auf den programmgesteuerten Sortiermodus festgelegt sind, zeigen nicht automatisch eine Sortierglyphe an. Für diese Spalten müssen Sie die Glyphe selbst anzeigen, indem Sie die eigenschaft DataGridViewColumnHeaderCell.SortGlyphDirection festlegen. Dies ist erforderlich, wenn Sie Flexibilität bei der benutzerdefinierten Sortierung wünschen. Wenn Sie beispielsweise DataGridView nach mehreren Spalten sortieren, müssen Sie möglicherweise mehrere Sortierglyphen oder keine Sortierglyphe anzeigen.
Obwohl Sie eine DataGridView programmgesteuert nach einer beliebigen Spalte sortieren können, enthalten einige Spalten, z. B. Schaltflächenspalten, möglicherweise keine Werte, die sinnvoll sortiert werden können. Bei diesen Spalten gibt die SortMode-Einstellung der NotSortable-Eigenschaft an, dass sie nie für die Sortierung verwendet werden. Es besteht also keine Notwendigkeit, in der Überschrift Platz für die Sortierglyphe zu reservieren.
Wenn ein DataGridView sortiert wird, können Sie sowohl die Sortierspalte als auch die Sortierreihenfolge bestimmen, indem Sie die Werte der eigenschaften SortedColumn und SortOrder überprüfen. Diese Werte sind nach einem benutzerdefinierten Sortiervorgang nicht sinnvoll. Weitere Informationen zur benutzerdefinierten Sortierung finden Sie im Abschnitt "Benutzerdefinierte Sortierung" weiter unten in diesem Thema.
Wenn ein DataGridView Steuerelement mit gebundenen und ungebundenen Spalten sortiert wird, können die Werte in den ungebundenen Spalten nicht automatisch verwaltet werden. Um diese Werte beizubehalten, müssen Sie den virtuellen Modus implementieren, indem Sie die eigenschaft VirtualMode auf true
festlegen und die ereignisse CellValueNeeded und CellValuePushed behandeln. Weitere Informationen finden Sie unter Virtueller Modus im DataGridView-Steuerelement in Windows Forms. Das Sortieren nach ungebundenen Spalten im gebundenen Modus wird nicht unterstützt.
Programmgesteuerte Sortierung
Sie können DataGridView programmgesteuert sortieren, indem Sie die Sort-Methode aufrufen.
Die Sort(DataGridViewColumn,ListSortDirection)
-Überladung der Sort-Methode verwendet als Parameter den Wert einer DataGridViewColumn- und ListSortDirection-Enumeration. Diese Überladung ist nützlich, wenn Sie nach Spalten mit Werten sortieren, die sinnvoll angeordnet werden können, für die Sie aber keine automatische Sortierung konfigurieren möchten. Wenn Sie diese Überladung aufrufen und eine Spalte mit dem Wert SortMode für die DataGridViewColumnSortMode.Automatic-Eigenschaft übergeben, werden die Eigenschaften SortedColumn und SortOrder automatisch festgelegt, und die entsprechende Sortierglyphe wird in der Spaltenüberschrift angezeigt.
Hinweis
Wenn das DataGridView-Steuerelement durch Festlegen der DataSource-Eigenschaft an eine externe Datenquelle gebunden ist, funktioniert die Überladung der Sort(DataGridViewColumn,ListSortDirection)
-Methode nicht für ungebundene Spalten. Wenn zudem die VirtualMode-Eigenschaft true
lautet, können Sie diese Überladung nur für gebundene Spalten aufrufen. Um festzustellen, ob eine Spalte datengebunden ist, überprüfen Sie den IsDataBound Eigenschaftswert. Das Sortieren ungebundener Spalten im gebundenen Modus wird nicht unterstützt.
Benutzerdefinierte Sortierung
Sie können DataGridView anpassen, indem Sie die Sort(IComparer)
-Überladung der Sort-Methode verwenden oder das SortCompare-Ereignis behandeln.
Die Überladung der Sort(IComparer)
-Methode verwendet als Parameter eine Instanz einer Klasse, die die IComparer-Schnittstelle implementiert. Diese Überladung ist nützlich, wenn Sie eine benutzerdefinierte Sortierung bereitstellen möchten. Wenn beispielsweise die Werte in einer Spalte keine natürliche Sortierreihenfolge aufweisen oder die natürliche Sortierreihenfolge unangemessen ist. In diesem Fall können Sie keine automatische Sortierung verwenden, ihre Benutzer können aber trotzdem sortieren, indem Sie auf die Spaltenüberschriften klicken. Sie können diese Überladung in einem Handler für das ColumnHeaderMouseClick-Ereignis aufrufen, wenn Sie für die Auswahl keine Spaltenüberschriften verwenden.
Hinweis
Die Überladung der Sort(IComparer)
-Methode funktioniert nur, wenn das DataGridView-Steuerelement nicht an eine externe Datenquelle gebunden ist und die VirtualMode-Eigenschaft den Wert false
hat. Um die Sortierung für Spalten anzupassen, die an eine externe Datenquelle gebunden sind, müssen Sie die sortiervorgänge verwenden, die von der Datenquelle bereitgestellt werden. Im virtuellen Modus müssen Sie eigene Sortiervorgänge für ungebundene Spalten bereitstellen.
Um die Sort(IComparer)
Methodenüberladung zu verwenden, müssen Sie eine eigene Klasse erstellen, die die IComparer Schnittstelle implementiert. Diese Schnittstelle erfordert, dass Ihre Klasse die IComparer.Compare-Methode implementiert, an die DataGridView-Objekte von DataGridViewRow als Eingabe übergeben werden, wenn die Überladung der Sort(IComparer)
-Methode aufgerufen wird. Damit können Sie die richtige Zeilenreihenfolge basierend auf den Werten in einer beliebigen Spalte berechnen.
Die Überladung der Sort(IComparer)
-Methode legt die Eigenschaften SortedColumn und SortOrder nicht fest, sodass Sie stets die DataGridViewColumnHeaderCell.SortGlyphDirection-Eigenschaft festlegen müssen, um die Sortierglyphe anzuzeigen.
Als Alternative zur Überladung der Sort(IComparer)
-Methode können Sie eine benutzerdefinierte Sortierung bereitstellen, indem Sie einen Handler für das SortCompare-Ereignis implementieren. Dieses Ereignis tritt ein, wenn Benutzende auf die Überschriften von Spalten klicken, die für die automatische Sortierung konfiguriert sind, oder wenn Sie die Sort(DataGridViewColumn,ListSortDirection)
-Überladung der Sort-Methode aufrufen. Das Ereignis tritt für jedes Zeilenpaar im Steuerelement auf, sodass Sie deren richtige Reihenfolge berechnen können.
Hinweis
Das SortCompare-Ereignis tritt nicht auf, wenn die DataSource-Eigenschaft festgelegt wird oder wenn der Wert der VirtualMode-Eigenschaft true
ist.
Siehe auch
- DataGridView
- DataGridView.Sort
- DataGridView.SortedColumn
- DataGridView.SortOrder
- DataGridViewColumn.SortMode
- DataGridViewColumnHeaderCell.SortGlyphDirection
- Sortieren von Daten im DataGridView-Steuerelement in Windows Forms
- Festlegen der Sortierungsmodi für Spalten im DataGridView-Steuerelement in Windows Forms
- Vorgehensweise: Anpassen der Sortierung im DataGridView-Steuerelement von Windows Forms
.NET Desktop feedback