Me.DataGridView1.AutoGenerateColumns = False
Me.DataGridView1.DataSource = dt
Dim installs(dt供應商.Rows.Count - 1) As String
Dim x As Integer = 0
For Each dr As DataRow In dt供應商.Rows
installs(x) = dr(0).ToString
x += 1
Next
'供應商
Dim columnSex As New DataGridViewComboBoxColumn()
columnSex.HeaderText = "供應商別"
columnSex.Name = "供應商別"
columnSex.DataPropertyName = "供應商別"
columnSex.ValueType = GetType(String) 'dt供應商.Rows(0).Item(0).GetType()
columnSex.Items.AddRange(installs)
DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {columnSex})
原因:
出现这种问题有两种原因:
1.数据类型不匹配
2.所赋数据项与绑定的数据源中数据不符 结贴!
此次debug為第二種原因:
資料庫某一個Record的其供應商別的欄位的值為 X
而DataGridViewComboBoxColumn的Items的值為 Y,Z,S 不包含X
解決(一):
繫結資料庫dt時,必須確定資料庫的值可與DataGridViewComboBoxColumn的Items匹配。
只要把資料庫的值改掉就好。 也就是說必須確定資料庫的值不會是Items匹配以外的值。
解決(二):
直接在事件處理掉 ""DataGridView1_DataError""
就不會出現錯誤訊息,只要不影響作業!
但是若資料庫的數值型態與.NET數值型態不符時,雖然錯誤訊息已隱藏!
但當在選擇items時,會無法正常運作。
即使你選擇了某值,而此值因為違反規則,所以又會變成空白...
Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
'e.ThrowException = False
'If Me.DataGridView1.Columns(e.ColumnIndex).Name = "供應商別" Then
'do something here
'留空, 只要輸入符合欄位型態,(為繫結資料來源內的項目)可正常輸入!
'End If
End Sub
可參考(DataGridViewComboBoxColumn的数据源有关问题)
DataGridViewDataErrorContexts 列舉型別
圖示:
原始資料(From DataBase)
紅色部份為不存在於繫結來源內的項目
沒有加入事件 DataGridView1_DataError (在AA03 就開始出現錯誤訊息...)
加入事件 DataGridView1_DataError
選擇來源為資料繫結內的項目-001
選擇來源為繫結資料內的項目-002
輸入自定義文字-001
輸入自定義文字-002 ∵不符合原始繫結資料內的項目,故還原為空白!
參考:
C# 類型的預設值 (C# 參考) string就不會出錯,但數值有預設值,所以會出錯...
Datagridview ComboBoxColumn Nullable
DataGridViewComboBoxCell.GetFormattedValue 方法
给DataGridViewComboBoxCell赋值的问题!
DataGridViewComboBoxColumn值无效
DataGridViewComboBoxColumn值无效
解决方法就是在窗体的构造函数里添加如下代码:
DataGridViewComboBoxColumn的使用 (高招)
Mapping CLR Parameter Data
DataGridView 使用问题
DataGridView.DataError 事件
Non-String values in DataGridViewComboBoxColumn causing DataErrors in DataGridView
System.ArgumentException:DataGridViewComboBoxCell 值無效 (1)
DataGridViewComboBoxCell 值無效
DataGridView中comboBox数据绑定的问题
DataGridView 的DataGridViewComboBoxColumn 無效值問題
SqlServer中decimal(numeric )、float 和 real 数据类型的区别
What is a good mapping of .NET decimal to SQL Server decimal?
DataGridViewComboBoxCell.GetFormattedValue 方法
给DataGridViewComboBoxCell赋值的问题!
DataGridViewComboBoxColumn值无效
DataGridViewComboBoxColumn值无效
解决方法就是在窗体的构造函数里添加如下代码:
this.dataGridView1.DataError += delegate(object sender, DataGridViewDataErrorEventArgs e) { };
DataGridViewComboBoxColumn的使用 (高招)
Mapping CLR Parameter Data
DataGridView 使用问题
DataGridView.DataError 事件
Non-String values in DataGridViewComboBoxColumn causing DataErrors in DataGridView
System.ArgumentException:DataGridViewComboBoxCell 值無效 (1)
DataGridViewComboBoxCell 值無效
DataGridView中comboBox数据绑定的问题
DataGridView 的DataGridViewComboBoxColumn 無效值問題
SqlServer中decimal(numeric )、float 和 real 数据类型的区别
What is a good mapping of .NET decimal to SQL Server decimal?
沒有留言:
張貼留言