Вопрос

Может ли кто-нибудь предложить хорошую реализацию общего класса коллекции, реализующего IBindingListView & IBindingList интерфейсы и предоставляет возможности фильтрации и поиска?

Я вижу свои текущие варианты как:

  • Использование класса, который написал и протестировал кто-то другой.
  • Наследование от BindingList<T>, и реализации IBindingListView интерфейсы
  • Напишите собственную коллекцию с нуля, реализовав IBindingListView и IBindingList.

Очевидно, что первый вариант — мой предпочтительный выбор.

Это было полезно?

Решение

Я использовал и развивал реализацию, которую нашел, и старый пост на форуме MSDN, сделанный несколько лет назад, но недавно я снова поискал и нашел проект sourceforge под названием Список привязокView.Выглядит довольно красиво, просто я еще не подключил его на замену взломанной версии.

пакет nuget: Equin.ApplicationFramework.BindingListView

Пример кода:

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

Другие советы

Вот помощь для вашего метода 2 и 3 за кулисами:Реализация фильтрации для привязки данных Windows Forms

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

Несколько решений, которые я могу придумать:

  1. А Дозвуковой проект имеет довольно хорошую реализацию BindlingList<T> который имеет открытый исходный код.Хотя для использования их реализации может потребоваться использование всего двоичного файла SubSonic.

  2. Мне нравится использовать классы из Коллекции силы проект.Там довольно просто наследовать одну из базовых коллекций и реализовать IBindingListView.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top