Сведения о вопросе

Fedya

10:03, 10th August, 2020

Теги

.net   data-binding    

Универсальные Реализации IBindingListView

Просмотров: 527   Ответов: 3

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

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


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

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




  Сведения об ответе

VERSUION

07:15, 12th August, 2020

Я использовал и построил реализацию, которую нашел на старом посте форума 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");


  Сведения об ответе

prince

05:13, 4th August, 2020

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

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


  Сведения об ответе

P_S_S

10:26, 7th August, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться