DataTable.Select() の結果を ListBox コントロールにバインドするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/114851

質問

次のコードがあります。

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

あなたがやろうとしていることに対するそのアプローチは、おそらくやりすぎですが、行の配列からデータテーブルを取得する必要がある場合に役立つ場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top