تطبيقات IBindingListView العامة
-
09-06-2019 - |
سؤال
هل يمكن لأي شخص أن يقترح تنفيذًا جيدًا لفئة المجموعة العامة التي تنفذ IBindingListView
& IBindingList
واجهات ويوفر قدرات التصفية والبحث؟
أرى خياراتي الحالية على النحو التالي:
- استخدام فصل دراسي كتبه واختبره شخص آخر
- يرث من
BindingList<T>
, ، وتنفيذIBindingListView
واجهات - كتابة مجموعة مخصصة من الصفر، وتنفيذها
IBindingListView
وIBindingList
.
ومن الواضح أن الخيار الأول هو خياري المفضل.
المحلول
لقد استخدمت تطبيقًا وجدته في منشور منتدى MSDN القديم وقمت بالبناء عليه منذ بضع سنوات مضت، ولكن مؤخرًا بحثت مرة أخرى ووجدت مشروع sourceforge يسمى BindingListView.يبدو جميلًا جدًا، ولم أقم بسحبه لاستبدال نسختي المخترقة بعد.
حزمة نوجيت: 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
هناك بعض الحلول التي يمكنني التفكير فيها:
ال مشروع دون سونيك لديه تنفيذ جميل جدا ل
BindlingList<T>
وهو مفتوح المصدر.على الرغم من أن هذا قد يتطلب استخدام البرنامج الثنائي SubSonic بالكامل لاستخدام تنفيذه.أنا أستمتع باستخدام الفصول الدراسية من مجموعات الطاقة مشروع.من السهل جدًا الوراثة من إحدى المجموعات الأساسية هناك وتنفيذها
IBindingListView
.