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

时间:2020-03-06 14:32:23  来源:igfitidea点击:

我有以下代码:

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

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

无论我在ListBox.DisplayMember属性中指定什么,我所看到的都是具有正确数量的项目的ListBox,这些项目都显示为System.Data.DataRow,而不是我想要的名称中的值。 `专栏!

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

(循环没问题,但结局似乎不太好!)

解决方案

请改用DataView。

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

Josh对DataView拥有正确的看法。如果我们需要一个很大的锤子,则可以从任何DataTable.Select(" ...")中获取行的数组,然后合并到另一个DataSet中。

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

对于我们尝试做的事情,这种方法很可能是矫kill过正,但是在某些情况下,我们可能需要从行数组中获取数据表,这很有用。