سؤال

هل من الممكن تصفية محتويات Listbox في تطبيق Windows Forms؟

مصدر البيانات الخاص بـ ListBox الخاص بي هو مصدر ربط يحتوي على مجموعة من DTOs في:

IList<DisplayDTO>

أريد التصفية على خاصية DTO المحددة في DisplayMember الخاص بـ ListBox.

يتم توفير النص المراد تصفيته في مربع نص منفصل.

هل كانت مفيدة؟

المحلول

يجب أن يعمل هذا:

private void textBox_TextChanged(object sender, EventArgs e)
{
    bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
                                         listBox.DisplayMember,
                                         textBox.Text.Replace("'", "''"));
}

يحرر:يعمل هذا فقط إذا كان مصدر البيانات الأساسي (bindingSource.DataSource) ينفذ IBindingListView.في FCL، فقط DataView تطبق الطبقة هذه الواجهة.

يمكنك إنشاء التنفيذ الخاص بك عن طريق الوراثة من BindingList<T>.هنا مقالة وهذا يشرح كيفية إضافة وظيفة التصفية.يمكنك أيضًا العثور على تطبيقات مختلفة لـ SortableBindingList على جوجل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top