2014-06-05 23 views
0

我有一個函數,返回一個國家列表作爲數據表。如何將這些行值添加到組合框?如何在組合框中添加數據表項?

For Each row as DataRow in fooDataTable.Rows 
    combobox.Items.add(row) 
Next 

一些如何不填滿我的組合框上的值。該數據表返回100行。每行有2列。我正在嘗試添加第一列的所有100個數據行。任何幫助將不勝感激。

+3

嘗試設置'combobox.DataSource = fooDataTable',然後設置'combobox.DisplayMember ='您的字段名稱'' – LarsTech

+0

設置一個斷點並查看CBO之後有多少項目。它可能是**你正在添加的**。我不確定什麼'.ToString'返回一個'System.Data.Datarow' – Plutonix

+0

它只是返回類似System.something的東西..它不是重新獲取值。 –

回答

2

A DataRow是一個對象,雖然可以將對象添加到組合對象或列表框,但在這種情況下,結果不是很有用。在.Items中存儲對象時,將顯示.ToString函數的結果。在這種情況下,它只會顯示System.Data.Datarow

最好的解決方案是LarsTech建議的,並使用現有的數據表作爲數據源。這是經濟的,因爲沒有什麼對CBO新創建:

ComboBox.DataSource = fooDataTable 
ComboBox.DisplayMember = "column name in DT" 

另一種方法是修改你的循環:

combobox.Items.Add(row("col name").ToString) 

這從列名到CBO添加數據。如果這是像人民的名字和你想顯示姓氏和名字:

combobox.Items.Add(String.Format("{0}, {1}", row("LastName").ToString, 
        row("FirstName").ToString)) 

這是相似,除了我們正在格式化兩列的內容,我們將它添加到CBO。

還有一種方法是爲每行創建一個類對象,該對象返回要通過ToString覆蓋顯示的內容;並將它們添加到CBO中,但考慮到第一種替代方案的經濟性,這在這種情況下是過度的。

相關問題