Lsteinme Geschrieben 22. März 2013 Teilen Geschrieben 22. März 2013 Hallo Leute, Ich hab ein kleines Problem mit dem Anzeigen meiner Daten im Dataview welcher meinem Datagridview zugrunde liegt. Und zwar, muss ich für eine Spalte in meiner Dataview, der sich aus einer Datatable speist, eine besondere Sortierprozedur erstellen, da hier mehre Objekttypen zusammenspielen. Wenn die Daten im DGV direkt liegen ist das ja kein Problem, da nimmt man einfach das Hauseigene SortCompare oder Sorted Event und bastelt daran rum. Wie kann ich aber das ganze dahingehend verändern, das ich auch in einem Dataview eine etwas angepasste Sortierfunktion einbauen kann? Im Internet hab ich zwar immer wieder die schönen Links zur MicrosoftLib gefunden, aber da steht au nur wie man in einem DataView (naiv) nach einer oder mehreren Spalten sortiert und ne Sortorder mit gibt, was für meinen fall halt leider net ausreicht, siehe Szenario Das Szenario is wie folgt: in meinem DGV werden Projekte und Teilziele dieser Projekte angezeigt. wir nun nach dem Namen sortiert sollen zwar die Projekte neu sortiert werden, die Teilziele, die per Default direkt unter den Projekten stehen, aber sollen mit den Projekten mit wandern und somit immer bei ihrem Projekt bleiben. Mein bisher in der Theorie erfolgsversprechendster Versuch sah dabei wie folgt aus: ich habe für den Namen aller Einträge in der Datatable eine neue Klasse erstellt. (MyString) Diese hat die Compare und CompareTO methoden implementiert so wie die ToString methode überschrieben. Beim erstellen eines neuen MyStrings wurde dann Typ des Eintrags mitgegeben und dem entsprechend 2 Einträge gesetzt, der "shownname" sowie der "identname". Im Falle eines Teilziels wird der identname durch eine Kombination von "Projektname" und "Teilzielname" gebildt. In den Compare Methoden hab ich dann einfach die StringCompare() Methode angewandt um jeweils die identnamen miteinander zu vergleichen. Was in der Theorie ganz gut klang, scheint den Dataview beim sortieren aber nicht weiter zu interessieren, augenscheinlich sortiert er weiterhin nur nach dem angezeigten Namen und verwendt nicht die Compare Methoden meiner MyString Klasse. Gruß lsteinme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lsteinme Geschrieben 22. März 2013 Autor Teilen Geschrieben 22. März 2013 Ok, hab ne Lösung gefunden, auch wenn sie wahrscheinlich unnötig Kompliziert ist und einen anderen Nachteil nachsich zieht: Ich hab einfach eine neue Spalte in meine DT eingezogen, die einen String mit dem Projektnamen+(falls vorhanden)Teilzielnamen beinhaltet. wenn der Nutzer nun auf die normale Namen spalte klickt, wird nach dieser eignetlich Unsichbaren Spalte sortiert. Nachteil: dreht man die Sortorder rum, steht das Projekt unter den Teilzielen xD, aber naja, da ich sowieso die automatische Sotierung der Spalten ausschalten musste, hab ich halt einfach die invertierung des Sortbefehls für den Namen nicht eingebaut, mag nicht sehr schön sein, funtkioniert aber. Falls wem was besseres einfällt, ich bin da für alles Offen^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 25. März 2013 Teilen Geschrieben 25. März 2013 Hallo, mein erster Einfall wäre eine Sortierung per LINQ auf die DataSource gewesen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 25. März 2013 Teilen Geschrieben 25. März 2013 Hallo ich glaube was du suchst ist die Gruppierung. Also nach Projekten gruppieren, anschließend kannst danach sortieren Gruß Hans-Jörg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 25. März 2013 Teilen Geschrieben 25. März 2013 Hallo ich glaube was du suchst ist die Gruppierung. Also nach Projekten gruppieren, anschließend kannst danach sortieren Gruß Hans-Jörg Würde auch mit LINQ funktionieren :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lsteinme Geschrieben 25. März 2013 Autor Teilen Geschrieben 25. März 2013 Das klingt doch schonmal viel besser wie meine Notidee^^, aber wenn die die gruppiere, kann ich dann dennoch beide Ordnen? in der Tabelle stehen ja sowohl Projekte als auch Teilziele und BEIDE sollen geordnet sein, dabei aber nicht "zerrissen" werden, also das nachher ein Projekt ganz wo anders in der alphabetischen Ordnung steht als ein Teilziel. Auf jeden Fall werd ich mich mal in dieses Linq einlesen, das scheint ja recht praktisch zu sein. Herzlichen Dank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lsteinme Geschrieben 26. März 2013 Autor Teilen Geschrieben 26. März 2013 Würde auch mit LINQ funktionieren :-) Wie is denn in VB.net die Notation mit der ich eine LINQ Anfrage auf eine Datatable loslassen kann? wenn ichs einfach so versuche, bekomm ich nen fehler der aussagt, ne Datatable sei nicht für LINQ Statements geeignet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 26. März 2013 Teilen Geschrieben 26. März 2013 Hallo im Anfangs-Post hast du noch von Objekttypen geredet!? Ich bin also davon ausgegangen, dass du Datenklassen verwendest. Wenn du also folgendes hast, sollte es auch mit Linq kein Problem geben Datenklasse Public Class Projekt Private _CPJNr As String = "" Public Property CPJNr As String Get Return _CPJNr End Get Set(ByVal value As String) _CPJNr = value End Set End Property Private _CPJDatum As String = Mid(Now().ToString, 1, 10) Public Property CPJDatum As String Get Return _CPJDatum End Get Set(ByVal value As String) _CPJDatum = value End Set End Property End Class Nun im Eigentlich Code Dim deineListe as new List(of Projekt) Dann kannste auf "deineListe" mit Linq arbeiten, siehe dazu auch LINQ in Visual Basic Gruß Hans-Jörg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Lsteinme Geschrieben 26. März 2013 Autor Teilen Geschrieben 26. März 2013 Hast recht, hab zwischenZeitlich auch entdeckt das ich neben der Datatable, die dem DGV zu grunde liegt noch dictionarys habe aus denen sich ja das ganze speist, also geh ich mit LINQ einfach über die drüber. Wobei ich jetzt, zum austesten des ganzen, auf ein hässliches Problem gestoßen bin, was sich aber hoff ich durch bisschen Nachdenken lösen lässt. Die Kurzfassung: es gibt sichtbare und unsichtbare Columns im DGV, deren Sichtbarkeit ist aber nicht statisch sondern der Nutzer kann sich aussuchen welche columns er grad sehn will, was beim (ebenfallsintegrierten) Textfilter evt hässlich wird^^ Aber denk das sollt ich hin bekommen, danke für den Support Gruß Lucas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 26. März 2013 Teilen Geschrieben 26. März 2013 ne Datatable sei nicht für LINQ Statements geeignet Eine DataTable ist ja auch nur ein Container für DataRows. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.