dataGridViewCombobox值未保存在导航器上保存按钮单击

时间:2012-09-14 00:43:15

标签: vb.net winforms datagridviewcombobox

这是一个使用EF的VB.NET winforms项目。 ComboBox绑定到一个单独的数据源,其中包含colums 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的属性如下所示:

ComboBoxProperties

应该注意,当单击保存按钮时,对数据网格的所有其他更改都会正确保存...进一步测试后,如果不再选择ComboBox,则实际将保存该值。我想在更改comboBox的值之后,可以将注意力集中在其他方面。如果这似乎是最好的方法,我将如何为datagridview中的comboBoxs挂钩SelectedIndexChanged事件???

1 个答案:

答案 0 :(得分: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://stackoverflow.com/a/6469559/269123