2015-11-25 114 views
-1

我想使用通過SQLDataAdapter從SQL返回的DataTable填充組合框。ComboBox.DisplayMember沒有效果

組合框條目應顯示爲來自VendorName列的字符串,但它們顯示爲來自ID列的整數。

任何人都可以發現我錯過了什麼嗎?

DataTable vendors = sql.GetData("SELECT id, VendorName FROM Vendors ORDER BY VendorName", "Q"); 

drpVendor.DataSource = vendors; 
drpVendor.DisplayMember = "VendorName"; 
drpVendor.ValueMember = "id"; 
drpVendor.SelectedIndex = 0; 

enter image description here

我已經通過分配它作爲一個DataGridView的DataSource驗證數據表的供應商的內容如下所示:

enter image description here

+0

我們可能不得不看看你在GetData函數中做了什麼。 – LarsTech

+0

問題不在於您向我們顯示的代碼中。如果DisplayMember設置不正確,它會在組合框中顯示類似「System.Data.DataRow」的內容。你必須在'sql.GetData()'中做錯了什麼。 – Steve

回答

0

的問題的根源這裏與Visual Studio 2010的this問題不顯示運行時錯誤。一旦在調試>例外> CLR中糾正了這個問題,運行時錯誤就可以識別出以下問題。

drpVendor.DataSource = vendors; 

這條線之後被稱爲drpVendor_SelectedIndexChanged事件被解僱了其試圖改變DataGridView的只讀列。

由於沒有拋出CLR異常,代碼在此行離開顯示默認「id」列的組合框之後才崩潰。