2015-10-26 54 views
0

選擇一個項目我有DataGridViews一個相當長的一段經歷,我解決不了這個超級簡單的問題...在Datagridviewcomboboxcolumn

我有一個comboboxcolumn一個DataGridView 預先設定可能的選項(3個簡單的選項) 。我有一個表格的數據庫,我想爲列中的單元格選擇正確的值。我需要保留用戶可能稍後更改選項的選項(並將其保存回數據庫)。

我創建了選項的數據表:

Dim dtShift As New DataTable 
    dtShift.Columns.Add("ValueM") 
    dtShift.Columns.Add("DisplayM") 
    dtShift.Rows.Add({123, "123"}) 
    dtShift.Rows.Add({345, "345"}) 
    dtShift.Rows.Add({678, "678"}) 

然後我給你這樣(DS爲數據集數據填充)值:

Me.DataGridView1.AutoGenerateColumns = False 
    Dim colpon As DataGridViewComboBoxColumn = Me.DataGridView1.Columns("PonLen") 
    With colpon 
     .DataSource = dtShift 
     .ValueMember = "ValueM" 
     .DisplayMember = "DisplayM" 
     .DataPropertyName = "PonLen".ToString ' contains an option like "345" 
     '.ValueMember = "PonLen" ' not needed, if Display member is saved 
    End With 

...但是這行不通好吧,儘管它儘可能的接近我所能得到的。我 列具有正確的選項,有選擇正確的價值觀,但DataErrorEvent洪水與錯誤像這樣的測試日誌文本框:

Row=12 cell=3 : System.FormatException: DataGridViewComboBoxCell value is not valid. 
+1

列'PonLen'的類型是什麼?確保輸入該列與選項DataTable中的'ValueM'列的類型相同。 – Fabio

+0

PonLen是TinyInt。我會看看如何爲數據表列指定數據類型。 –

+0

我指定的值成員的數據類型:dtShift.Columns(0).DataType = System.Type.GetType(「System.Int32」) - 但它沒有幫助解決此問題... –

回答

0

好了,問題是在數據類型,我沒有意識到,System.Int16與System.Byte(ShortInt vs tinyInt)之間的區別確實很重要。

DB字段:TINYINT(0到256)

ValueMember:系統。 字節(0至256 - 從System.Int16改變或32)

......和現在的作品 - 因爲它沒有,但以同樣的方式引發錯誤:-)

問候,

橡木

相關問題