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 o IBindingListView interfaces
  • Escrever uma coleção personalizada a partir do zero, a implementação de IBindingListView e IBindingList.

Obviamente, a primeira opção é a minha escolha preferida.

Foi útil?

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

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

Algumas soluções que eu posso pensar:

  1. 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.

  2. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top