| 

.NET C# Java Javascript Exception

3
Hallo Leute
anbei eine detaillierte Problembeschreibung an Hand eines Beispiels:
Ich habe eine Klasse "Fahrzeug". Auf Grund von externen Beschränkungen sollen im DataGridView nur einige (unterschiedliche) Eigenschaften der Klasse im DataGridView angezeigt werden.

List<Vehicle> vehicles;
var firstSelection = (From v in vehicles
select new {v.Name, v.Model}).ToList()

var secondSelection = (From v in vehicles
select new {v.Name, v.Price}).ToList()


Je nach Businesslogik wird die erste oder zweite collection and das DataGridView
gebunden:
DataGridView dgv;
dgv.DataSource = firstSelection
(oder aber dgv.DataSource = secondSelection )


So weit so gut.
Jedoch lässt sich das gebundene Resultat nicht automatisch im DataGridView sortieren.
Weder List<T> noch BindingList<T> implementieren die Sortiermöglichkeiten.

Alle Lösungen die Google bisher ausgespuckt hat, sehen meist so aus:
es wird eine generische sortierbare Liste erzeugt, die die benötigen Methoden zur Sortierung implementiert.
public class SortableBindgiList<T>: BindingList<T>
{
protected override void ApplySortCore(PropertyDescriptor prop,ListSortDirection direction)
{...}
}


Jedoch habe ich bei den Listen jeweils einen unbestimmten(variablen) Typ, so dass ich die Lösung in der Form nicht anwenden kann.
Hat jemand eine Idee wie man sich die automatische Sortierung des DataGridViews trotzdem zu Nutze machen kann (ohne diese selbst zu implementieren)?
Danke
25.02.2011
Gast
33 1 3
1 Antwort
2
Afaik geht das automatische Sortieren im Grid nur mit einer Typen der
IBindinglistView
implementiert.
BCL seitig ist das nur ein DataView / eine BindingSource.

Also vielleicht ein Implementieren von
IBindingListview
mal probieren.

Hier ein paar Links:
Sort a BindingList

Implementing the IBindingListView for filtering

Nachtrag:
Hiermit könnte es funktionieren, über Expression Trees, ans HeaderClickEvent hängen
anonymous type acrobatics

Habs grad mal getestet, Sortieren nach Int-Property mit 100000 items kostet 55ms im Release und exe.
25.02.2011
KHoffmann 939 7
Hi Danke für die Antwort,
aber leider hilft mir diese nicht weiter.
Beide Lösungen arbeiten hier wieder mit streng typisierten BindingListen. Ich jedoch habe anonyme DatenTypen. Das ist ja gerade das Problem.
– Gast 25.02.2011
wow. sieht vielversprechend aus der ansatz. werd das gleich mal testen. Danke
– Gast 28.02.2011

Stelle deine Databinding-Frage jetzt!