dataGridViewCombobox 值未保存在导航器上保存按钮单击
Posted
技术标签:
【中文标题】dataGridViewCombobox 值未保存在导航器上保存按钮单击【英文标题】:dataGridViewCombobox Value not being saved on Navigator Save Button Click 【发布时间】:2012-09-14 00:43:15 【问题描述】:这是一个使用 EF 的 VB.NET winforms 项目。 ComboBox 绑定到一个单独的数据源,其中包含列 tName 和 tNumber。 TName 是该值的简要描述,tNumber 是保存在财务表中名为 transaction_type 的列下的实际数字。在财务表中现有数据的显示上,一切都完美无缺。
网格中每个项目的组合框都显示了 transaction_type 的正确描述。但是,当我更改任何组合框的值并单击保存按钮时,它不会将任何值保存到 transaction_type。
任何想法为什么会这样?如果需要,我将添加任何缺少的代码..
form_load 事件如下所示:
Private Sub paymentHistoryView_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
FinancialDataGridView.DataSource = db.financials.Where(Function(f) f.TenantId = tenentId).OrderBy(Function(f) f.transaction_date)
TranstypeBindingSource.DataSource = db.transtypes.OrderBy(Function(f) f.tNumber)
BindingNavigatorDeleteItem.Enabled = False
End Sub
并且保存按钮点击事件如下:
Private Sub FinancialBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles FinancialBindingNavigatorSaveItem.Click
db.SaveChanges()
End Sub
ComboBox 的属性如下所示:
需要注意的是,当单击保存按钮时,对数据网格的所有其他更改都会正确保存...经过进一步测试,如果不再选择 ComboBox,该值将实际保存。我想解决方法是在组合框的值更改后专注于其他事情。如果这似乎是最好的方法,我将如何挂钩 Datagridview 中组合框的 SelectedIndexChanged 事件???
【问题讨论】:
【参考方案1】:我认为,如果您检查,如果您在单击保存按钮之前没有移出单元格,那么 datagridview 中的其他列实际上会发生同样的事情。好消息是您只需要添加一行代码。
FinancialDataGridView.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange)
现在您的 SaveItem_Click 事件处理程序应如下所示:
Private Sub FinancialBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles FinancialBindingNavigatorSaveItem.Click
FinancialDataGridView.CommitEdit(DataGridViewDataErrorContexts.CurrentCellChange)
db.SaveChanges()
End Sub
这将在保存之前提交脏单元格。
见https://***.com/a/6469559/269123
【讨论】:
以上是关于dataGridViewCombobox 值未保存在导航器上保存按钮单击的主要内容,如果未能解决你的问题,请参考以下文章
在保存实体 PrimaryGeneratedColumn 值未生成时,给出 NOT NULL 约束错误