Genérico IBindingListView Implementações
-
09-06-2019 - |
Pergunta
Alguém pode sugerir uma boa implementação de um conjunto genérico de classe que implementa a IBindingListView
& IBindingList
interfaces e oferece Filtragem e capacidade de Procura?
Eu vejo o meu atual opções como:
- Usando uma classe que alguém tenha escrito e testado
- Herdando a partir de
BindingList<T>
, e implementar oIBindingListView
interfaces - Escrever uma coleção personalizada a partir do zero, a implementação de
IBindingListView
eIBindingList
.
Obviamente, a primeira opção é a minha escolha preferida.
Solução
Eu usei e construído em cima de uma implementação que eu encontrei no e antigo fórum MSDN post de alguns anos atrás, mas recentemente eu procurei de novo, e encontrei um projeto chamado sourceforge BindingListView.Parece muito bom, eu só ainda não puxei-a para substituir a minha versão hackeada ainda.
o pacote do nuget: Equin.ApplicationFramework.BindingListView
Exemplo de código:
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");
Outras dicas
Aqui está a ajuda para o método 2 e 3 Por trás dos Bastidores:A implementação de Filtragem para Ligação de Dados de Formulários do Windows
Algumas soluções que eu posso pensar:
O Subsónico Projeto tem um muito bom implementação de
BindlingList<T>
o que é open source.Embora isso pode exigir a utilização de todo o SubSonic binário para usar a sua implementação.Eu gosto de utilizar as classes de Poder Coleções projeto.É bastante simples para herdar a partir de uma base de conjuntos e implementar
IBindingListView
.