12

我有以下代码:

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

DataTable.Select()方法返回一个对象数组System.Data.DataRow

无论我在ListBox.DisplayMember属性中指定什么,我所看到的只是列表框,其中项目的正确数量全部显示为,System.Data.DataRow而不是"name"列中我想要的值!

是否可以从 绑定到结果数组DataTable.Select(),而不是循环遍历它并将每个数组添加到ListBox

(我对循环没有问题,但似乎不是一个优雅的结局!)

4

2 回答 2

33

请改用DataView

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows);
ListBox.DisplayMember = "name"
于 2008-09-22T13:32:45.077 回答
1

Josh 在 DataView 上做得很好。如果您需要一个非常大的锤子,您可以从任何 DataTable.Select("...") 中获取行数组并合并到不同的 DataSet 中。


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

That approach for what you're trying to do is most probably overkill but there are instances when you may need to get a datatable out of an array of rows where it's helpful.

于 2008-09-22T14:05:18.213 回答