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
?
(ループには問題ありませんが、エレガントなエンディングとは思えません!)
解決
使う データビュー その代わり。
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