2015-05-21 90 views
0

我目前用C#工作,我有以下代碼來設置DGV內的組合框柱:細胞顯示值的成員(ID),而不是顯示部件

// Add the values of the combo box 
dgvcbGeneric.DataSource = dtDataSource; 
dgvcbGeneric.ValueMember = "ID"; 
dgvcbGeneric.DisplayMember = "Value"; 
dgvcbGeneric.DataPropertyName = strColumn; 
dgvcbGeneric.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox; 

dgvcbGeneric.DisplayStyleForCurrentCellOnly = true; 
// vGenericCMB.SortMode = DataGridViewColumnSortMode.Automatic 

dgvcbGeneric.DefaultCellStyle.NullValue = columns[strActualColumn].nullFormat; 

// Add the new ComboBoxColumn of the DGV 
dgvLink.Columns.Add(dgvcbGeneric); 

enter image description here

所有作品罰款,但DGV只顯示成員值當細胞具有焦點:

enter image description here

有人能解釋我爲什麼這個問題正在發生?

+0

我用''天''和'列'[strActualColumn] .nullFormat'用'null'替換了'strColumn',它對我來說工作正常。聚焦的單元顯示一個「ComboBox」,一旦選擇了一個值並且單元失去焦點,它仍然會顯示「Value」而不是「ID」。我不知道'NullValue'是否可以產生這種效果,但我無法分辨,因爲我不知道你在那個變量中有什麼值。 – OhBeWise

+0

該值具有空值。問題是一樣的 – MiBol

回答

3

我自己發現了錯誤。基本上在DGV的DataSource中,「Day」這一列的類型是「Byte」(SQL中的tinyint)。 當代碼嘗試創建DataTable來填充DGV組合框列時; ID類型是「整數」。

解決方案是檢查ID與列源的DataType。如果是不同的;拋出一個異常來檢查以前。

+0

我有與「長」和「整型」類型相同的問題。問題在更改DB中的類型後解決。 –