Общие реализации IBindingListView - PullRequest
19 голосов
/ 27 августа 2008

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

Мои текущие параметры отображаются как:

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

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

Ответы [ 3 ]

15 голосов
/ 03 октября 2008

Я использовал и опирался на реализацию, которую нашел на старом посте на форуме MSDN, опубликованном несколько лет назад, но недавно я снова искал и нашел проект sourceforge под названием BindingListView . Это выглядит довольно хорошо, я просто еще не вытащил его, чтобы заменить взломанную версию.

пакет 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");
4 голосов
/ 20 мая 2010

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

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

1 голос
/ 27 августа 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...