Générique IBindingListView Implémentations
-
09-06-2019 - |
Question
Quelqu'un peut-il suggérer une bonne mise en œuvre d'une collection générique de la classe qui implémente l' IBindingListView
& IBindingList
d'interfaces et de l'offre de Filtrage et de capacités de Recherche?
Je vois mes options:
- À l'aide d'une classe que quelqu'un d'autre a écrit et testé
- Héritant de
BindingList<T>
, et la mise en œuvre de laIBindingListView
interfaces - Écrire une collection personnalisée à partir de zéro, la mise en œuvre de
IBindingListView
etIBindingList
.
Évidemment, la première option est mon préféré.
La solution
J'ai utilisé et construit sur la mise en œuvre que j'ai trouvé sur et vieux MSDN post sur le forum il y a quelques années, mais récemment, j'ai cherché autour de nouveau et a trouvé un projet sur sourceforge appelé BindingListView.Il a l'air assez sympa, je n'en ai pas tiré dessus pour remplacer ma version piratée encore.
package nuget: Equin.ApplicationFramework.BindingListView
Exemple de code:
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");
Autres conseils
Voici l'aide de votre méthode 2 et 3 Derrière les Coulisses:La mise en œuvre de Filtrage pour la Liaison de Données Windows Forms
Un couple de solutions, que je pense:
L' SubSonic Projet a une assez bonne mise en œuvre de
BindlingList<T>
qui est open source.Même si cela peut nécessiter l'utilisation de l'ensemble de la Subsonique binaire à utiliser leur mise en œuvre.J'ai plaisir à utiliser les classes à partir de la La Puissance Des Collections projet.Il est assez simple à hériter de l'un de la base de collections et de mettre en œuvre
IBindingListView
.