dataGridViewCombobox Значение не сохраняется в кнопке Save Navigator

75
5

Это проект winforms VB.NET с использованием EF. 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

И событие clickbutton click выглядит следующим образом:

Private Sub FinancialBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles FinancialBindingNavigatorSaveItem.Click
db.SaveChanges()
End Sub

Ниже приведены свойства для ComboBox:

ComboBoxProperties

Следует отметить, что все остальные изменения в datagrid сохраняются корректно при нажатии кнопки сохранения... После дальнейшего тестирования значение действительно будет сохранено, если ComboBox больше не будет выбран. Я думаю, что работа вокруг будет заключаться в том, чтобы сосредоточиться на чем-то еще после изменения значения comboBox. Если это похоже на лучший способ, как бы я перехватил событие SelectedIndexChanged для comboBoxs в datagridview???

спросил(а) 2021-01-19T12:43:46+03:00 2 месяца, 3 недели назад
1
Решение
61

Я думаю, что если вы проверите, то то же самое произойдет и с другими столбцами в 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

Это приведет к загрязнению ячейки перед сохранением.

См. qaru.site/questions/891292/...

ответил(а) 2021-01-19T12:43:46+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема