2009-06-08 14 views
10

Ich verwende ein DataGridView auf Windows-Formular. Es zeigt nur zwei Spalten an. Standardmäßig, wenn die Anwendung ausgeführt wird, wenn ich auf die Spaltenköpfe klicke, wird die Datagridview basierend auf dieser Spalte sortiert. Ich möchte jedoch die Sortierung in der Rasteransicht vollständig deaktivieren. Ich konnte keine Eigenschaft finden, in der ich sorting = false oder etwas Ähnliches einstellen könnte.So verhindern Sie das Sortieren der Datenrasteransicht

Kann mir bitte jemand sagen, wie man Rasteransicht Sortierung deaktivieren?

Thanks :)

EDIT:

Gerade dachte ich, einzelne Spalten als NotSortable (unten geschrieben Antwort) einstellen könnte. Kann dies auf der Rasteransichtsebene statt auf einzelnen Spalten erfolgen?

Antwort

17

Okay, die Antwort gefunden. Für jede Spalte muss ich ausdrücklich

angeben
this.dgv.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; 

Also schrieb ich meine eigene Funktion in einem Helper-Klasse

/// <summary> 
/// Sets the sort mode for the data grid view by setting the sort mode of individual columns 
/// </summary> 
/// <param name="dgv">Data Grid View</param> 
/// <param name="sortMode">Sort node of type DataGridViewColumnSortMode</param> 
public static void SetGridViewSortState(DataGridView dgv, DataGridViewColumnSortMode sortMode) 
{ 
    foreach (DataGridViewColumn col in dgv.Columns) 
     col.SortMode = sortMode; 
} 

und wo auch immer, ich brauche, um Gitter sieht sortierbar, nenne ich es wie folgt aus:

+0

Dies funktioniert gut. Ich habe dies zu einer Erweiterungsmethode gemacht und kann es jetzt so nennen: 'dgv.SetGridViewSortState (DataGridViewColumnSortMode.NotSortable);' –

+0

Cool! Ich bin froh, dass die Lösung dir geholfen hat :) –

-1

Sie können immer die Spaltenüberschrift bearbeiten, indem Sie Ereignisse selbst anklicken und doppelklicken und nichts tun.

+0

Ich habe es versucht, aber es sortiert immer noch. –

3

web gridview hat eine Eigenschaft AllowSorting, die viel einfacher ist!

+0

Ja, das mache ich schließlich. Es ist jedoch immer noch auf Spaltenebene und nicht auf Grid-Ebene. –

+0

Cool! Arbeitet in VB.NET, ich wundere mich, warum es keine upvote dazu gibt. –

2

Die Sortierung ist teilweise ein Merkmal der Datenquelle. Was ist die Datenquelle in diesem Fall? DataTable, vielleicht? Eine Option besteht darin, einfach eine Datenquelle zu verwenden, die die Sortierung nicht unterstützt, also fast alle. List<T>, BindingList<T> usw. - Sortierung nicht bereitstellen.

Wenn Sie DataView verwenden müssen, man kann (ich glaube) wickelt die Ansicht mit einer benutzerdefinierten Ansicht, die neu implementiert IBindingList (false für SupportsSorting zurückkehren), sondern einfach die Werte pro Spalte zu ändern ist ein viele leichter (zu der Punkt, wo es verrückt sonst etwas wäre zu tun ...)

-1

Staring mit .NET 3.0, hat das Gridview eine Eigenschaft AllowSorting genannt

Verwandte Themen