سؤال

لدي الكود التالي:

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match")
ListBox.DisplayMember = "name"

ال DataTable.Select() طريقة إرجاع مجموعة من System.Data.DataRow أشياء.

بغض النظر عما أحدده في ListBox.DisplayMember الخاصية، كل ما أراه هو ListBox مع العدد الصحيح من العناصر التي تظهر جميعها كـ System.Data.DataRow بدلاً من القيمة التي أريدها والموجودة في "name" عمود!

هل من الممكن ربط المصفوفة الناتجة من DataTable.Select(), ، بدلاً من التكرار خلاله وإضافة كل واحد إلى ملف ListBox?

(ليس لدي مشكلة في التكرار، ولكن لا يبدو أن النهاية أنيقة!)

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

المحلول

إستخدم عرض البيانات بدلاً من.

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"

نصائح أخرى

جوش لديه الحق في استخدام DataView.إذا كنت بحاجة إلى مطرقة كبيرة جدًا، فيمكنك أخذ مصفوفة الصفوف من أي DataTable.Select("...") وإجراء الدمج في DataSet مختلفة.


 DataSet copy = new DataSet();
 copy.Merge(myDataTable.Select("Foo='Bar'"));
 // copy.Tables[0] has a clone

من المحتمل أن يكون هذا الأسلوب فيما تحاول القيام به مبالغة ولكن هناك حالات قد تحتاج فيها إلى الحصول على جدول بيانات من مجموعة من الصفوف حيث يكون ذلك مفيدًا.

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