如何将DataTable.Select()的结果绑定到ListBox控件?
-
02-07-2019 - |
题
我有以下代码:
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
?
(循环没问题,但看起来不是优雅的结局!)
解决方案
请改用 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
你想要做的事情的方法很可能是矫枉过正,但有些情况下,你可能需要从行数组中获取一个有用的数据表。
不隶属于 StackOverflow