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 值未保存在导航器上保存按钮单击的主要内容,如果未能解决你的问题,请参考以下文章

Django 表单视图:M 到 M 值未保存

焦点时DataGridView ComboBox不保存

值未保存到mysql数据库中

在保存实体 PrimaryGeneratedColumn 值未生成时,给出 NOT NULL 约束错误

“运行时检查失败 #0 - ESP 的值未在函数调用中正确保存”从 C++ 代码成功 C# 回调后

Mongoose 所需的验证器失败值未定义