如何将DataTable.Select()的结果绑定到ListBox控件?

时间:2008-09-22 13:25:52

标签: .net data-binding listbox datatable datarow

我有以下代码:

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

DataTable.Select() method会返回System.Data.DataRow个对象的数组。

无论我在ListBox.DisplayMember属性中指定了什么,我看到的只是ListBox,其正确的项目数显示为System.Data.DataRow,而不是我想要的值{{1}列!

是否可以从"name"绑定到生成的数组,而不是循环遍历它并将每个数组添加到DataTable.Select()

(循环没问题,但看起来不是优雅的结局!)

2 个答案:

答案 0 :(得分:33)

改为使用DataView

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

答案 1 :(得分:1)

Josh使用DataView是正确的。如果你需要一个非常大的锤子,你可以从任何DataTable.Select(“...”)获取行数组并合并到另一个DataSet中。


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

你想要做的事情的方法很可能是矫枉过正,但有些情况下,你可能需要从行数组中获取一个有用的数据表。