Domanda

Qualcuno può suggerire una buona implementazione di una classe di raccolta generica che implementa il file IBindingListView & IBindingList interfacce e fornisce funzionalità di filtraggio e ricerca?

Vedo le mie opzioni attuali come:

  • Utilizzando una classe che qualcun altro ha scritto e testato
  • Ereditando da BindingList<T>, e implementando il IBindingListView interfacce
  • Scrivi una collezione personalizzata da zero, implementandola IBindingListView E IBindingList.

Ovviamente la prima opzione è la mia scelta preferita.

È stato utile?

Soluzione

Ho utilizzato e sviluppato un'implementazione che ho trovato in un vecchio post del forum MSDN di alcuni anni fa, ma recentemente ho cercato di nuovo in giro e ho trovato un progetto sourceforge chiamato BindingListView.Sembra piuttosto carino, semplicemente non l'ho ancora inserito per sostituire la mia versione compromessa.

pacchetto nuget: Equin.ApplicationFramework.BindingListView

Codice di esempio:

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");

Altri suggerimenti

Ecco l'aiuto per il tuo metodo 2 e 3 dietro le quinte:Implementazione del filtro per l'associazione dati di Windows Form

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

Un paio di soluzioni che mi vengono in mente:

  1. IL Progetto Subsonico ha un'implementazione piuttosto carina di BindlingList<T> che è open source.Sebbene ciò potrebbe richiedere l'utilizzo dell'intero binario SubSonic per utilizzare la loro implementazione.

  2. Mi piace usare le lezioni di Collezioni di potere progetto.È abbastanza semplice ereditare da una delle raccolte di base presenti e implementarla IBindingListView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top