Frage

Kann jemand eine gute Implementierung einer generischen Sammlungsklasse vorschlagen, die das implementiert? IBindingListView & IBindingList Schnittstellen und bietet Filter- und Suchfunktionen?

Ich sehe meine aktuellen Optionen wie folgt:

  • Verwenden einer Klasse, die jemand anderes geschrieben und getestet hat
  • Erben von BindingList<T>, und Umsetzung der IBindingListView Schnittstellen
  • Schreiben Sie eine benutzerdefinierte Sammlung von Grund auf und implementieren Sie sie IBindingListView Und IBindingList.

Offensichtlich ist die erste Option meine bevorzugte Wahl.

War es hilfreich?

Lösung

Ich habe eine Implementierung verwendet und darauf aufgebaut, die ich vor ein paar Jahren in einem alten MSDN-Forumsbeitrag gefunden habe, aber kürzlich habe ich mich noch einmal umgesehen und ein Sourceforge-Projekt namens gefunden BindingListView.Es sieht ziemlich gut aus, ich habe es nur noch nicht eingespielt, um meine gehackte Version zu ersetzen.

Nuget-Paket: Equin.ApplicationFramework.BindingListView

Beispielcode:

var lst = new List<DemoClass>
{
    new DemoClass { Prop1 = "a", Prop2 = "b", Prop3 = "c" },
    new DemoClass { Prop1 = "a", Prop2 = "e", Prop3 = "f" },
    new DemoClass { Prop1 = "b", Prop2 = "h", Prop3 = "i" },
    new DemoClass { Prop1 = "b", Prop2 = "k", Prop3 = "l" }
};
dataGridView1.DataSource = new BindingListView<DemoClass>(lst);
// you can now sort by clicking the column headings 
//
// to filter the view...
var view = (BindingListView<DemoClass>)dataGridView1.DataSource;            
view.ApplyFilter(dc => dc.Prop1 == "a");

Andere Tipps

Hier ist die Hilfe für Ihre Methode 2 und 3 hinter den Kulissen:Implementieren der Filterung für die Windows Forms-Datenbindung

http://www.microsoft.com/downloads/details.aspx?FamilyID=4af0c96d-61d5-4645-8961-b423318541b4&displaylang=en

Ein paar Lösungen, die mir einfallen:

  1. Der SubSonic-Projekt hat eine ziemlich schöne Implementierung von BindlingList<T> Das ist Open Source.Allerdings erfordert dies möglicherweise die Verwendung der gesamten SubSonic-Binärdatei, um ihre Implementierung zu verwenden.

  2. Ich nutze gerne die Kurse von Power-Sammlungen Projekt.Es ist ziemlich einfach, von einer der dortigen Basissammlungen zu erben und zu implementieren IBindingListView.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top