سؤال

هل يمكن لأي شخص أن يقترح تنفيذًا جيدًا لفئة المجموعة العامة التي تنفذ 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

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