DataGridViewにComboBoxColumn
を追加し、BindingSourcesを使用して関連する別のDepartmentテーブルにリンクしています。DGVコンボボックスが表示されますが、デフォルト値はありません
新しい行が(アカウント)最初にリストされている部署を表示しますが、それはデフォルトでそれを選択しない、エラーの原因:
Cannot insert the value NULL into column 'DeptID', table 'StaffDB.dbo.Staff'; column does not allow nulls. INSERT fails.
答えhere at SOからのアドバイスに続いて、私は次のように使用していますデフォルト設定するには、次の
comboCol.DefaultCellStyle.NullValue = _bsDept(0)("Department")
comboCol.DefaultCellStyle.DataSourceNullValue = _bsDept(0)("DeptID")
これは、値4と「アカウント」で、デバッグに動作しているように見えますが、それでも同じエラーが得られます。
Dim comboCol = New DataGridViewComboBoxColumn()
comboCol.DataSource = _bsDept
comboCol.ValueMember = "DeptID"
comboCol.DisplayMember = "Department"
'staff table..
comboCol.DataPropertyName = "DeptID"
comboCol.HeaderText = "Department"
comboCol.DefaultCellStyle.Format = "d"
'the first Department "Accounts" appears to be selected, but it isn't
comboCol.DefaultCellStyle.NullValue = _bsDept(0)("Department")
comboCol.DefaultCellStyle.DataSourceNullValue = _bsDept(0)("DeptID")
dgvStaff.Columns.Add(comboCol)
はなぜ私のデフォルト値が無視されている。ここで
は、コンボボックスに関連するすべての設定はありますか? (ComboBoxは自分自身でDepartmentを選択した場合に機能します)
これらの 'DefaultCellStyle'小道具は、Nullsの表示方法を制御する以上のことをしていません。より適切かもしれない 'DefaultValuesNeeded'イベントがあります – Plutonix
ありがとう、それはある意味があります;)。このコードを使用して回答として追加すると、このコードを使用できます。e.Row.Cells( "Department")。Value = _bsDept(0)( "DeptID") –