これは、EF を使用した VB.NET winforms プロジェクトです。ComboBox は、列 tName および tNumber を含む別のデータソースにバインドされます。TName はその値の簡単な説明で、tNumber は Financial Table の 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
また、savebutton クリック イベントは次のとおりです。
Private Sub FinancialBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles FinancialBindingNavigatorSaveItem.Click
db.SaveChanges()
End Sub
ComboBox のプロパティを以下に示します。
保存ボタンをクリックすると、データグリッドへの他のすべての変更が正しく保存されることに注意してください... さらにテストした後、ComboBox が選択されていない場合、値は実際に保存されます。回避策は、comboBox の値が変更された後に別のことに集中することだと思います。これが最善の方法のように思われる場合、データグリッドビューのコンボボックスの SelectedIndexChanged イベントをフックするにはどうすればよいですか?