2009-06-18 14 views
0

Ich versuche, eine Datagridview in C# zusammenhacken, die hierarchische Daten (derzeit nur 2 Ebenen) behandeln kann, da ich nicht ein Steuerelement von Drittanbietern finden konnte, die funktionierte und genau so aussah, wie ich brauchte es zu.Sortierung Teilmenge von Zeilen in Datagridview

Ich habe es geschafft, erweitern/reduzieren und globale Sortierung arbeiten (nach Top-Level-Gruppe sortieren, dann in jeder Gruppe sortieren), aber ich möchte ein Feature hinzufügen, wo Sie nur innerhalb einer Top-Level-Gruppe sortieren können. Stellen Sie sich ein 2-spaltiges Beispiel vor, z.

column1  | column2 
    group 1  | 6 
     group 1 a | 1 
     group 1 b | 2 
     group 1 c | 3 
    group 2  | 15 
     group 2 a | 4 
     group 2 b | 5 
     group 2 c | 6 

Ich möchte der Benutzer die „15“ Zelle verdoppeln zu können, klicken Sie auf, und haben es irgendwie nur die „Gruppe 2 X“ Zeilen, wobei alle anderen Zeilen genau bleiben, wo die sind. Das Kennzeichen jeder Zelle sagt ihr, was sie ist, also weiß ich, ob das angegebene Zeilenpaar Teil derselben Untergruppe ist. Ich kann die Logik nicht verstehen. Ich habe versucht, SortResult = 0 für ein Paar von Zeilen, die nicht in derselben Gruppe sind, zu setzen, aber ich muss immer noch Fälle behandeln, in denen eine Zeile in der Untergruppe ist und eine nicht. irgendwelche Ideen?

Antwort

0

es herausgefunden - ich eine & & Zustand, wo ich eine || gehabt haben sollte ... im Grunde, wenn die beiden des Paares von Reihen verglichen werden, sind nicht Stellen Sie in der gleichen Untergruppe SortResult einfach so ein, dass der aktuell angezeigte Wert vor dem anderen angezeigt wird, und stellen Sie sicher, dass das Ergebnis abhängig von einer aufsteigenden oder absteigenden Sortierung umgedreht wird. Wenn sich beide Zeilen in derselben Untergruppe befinden, sortieren Sie sie wie gewohnt. jetzt, um meinen unordentlichen Code aufzuräumen :)

1

Sie können ein Datagrid in eine Spalte einfügen. Ich denke, das wird erreichen, was Sie wollen für

+0

es könnte, aber ich möchte nicht, wenn möglich, einen anderen Satz von Spaltenüberschriften anzuzeigen. Ich werde aber deine Idee untersuchen. – toasteroven

+0

Sie können die Header auf einem Datagrid entfernen. Wenn Sie mehr Kontrolle benötigen, können Sie verschachtelte Repeater verwenden – Sergio

Verwandte Themen