2008-09-22 70 views
12

我有以下代碼:如何將DataTable.Select()的結果綁定到ListBox控件?

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

DataTable.Select() method返回System.Data.DataRow對象的數組。

不管我在ListBox.DisplayMember財產指定,所有我看到的是用正確數量的項目都顯示爲System.Data.DataRow,而不是我想要的值,它是在"name"列的列表框!

是否可以綁定到從DataTable.Select()生成的數組,而不是循環遍歷它並將每個添加到ListBox

(我和循環沒有問題,但似乎沒有一個優雅的結局!)

回答

33

使用DataView代替。

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

在大多數情況下,您不能將標準控件直接綁定到DataTable或DataRow。你必須得到一個DataTableView或一個DataRowView。喬希是對的。 – Will 2008-09-22 13:33:54

1

Josh與DataView有正確的關係。如果你需要一個非常大的錘子,你可以從任何DataTable.Select(「...」)中獲取行的數組,併合併到一個不同的DataSet中。

 

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

你正在試圖做的是什麼方法最有可能是矯枉過正,但也有情況下,您可能需要獲得一個DataTable出來行的數組,其中是有幫助的。

相關問題