【发布时间】:2016-07-17 12:22:01
【问题描述】:
当用户进行更改时,我正在尝试将多个数据网格视图上的更改自动保存回我的数据库。如果我将它绑定到按钮单击事件,我的代码可以正常工作,但当我将它绑定到 cellvaluechanged 事件时则不行。有任何想法吗?它仍然单步执行代码,没有抛出任何错误,只是没有更新数据库。
Private dgv1_Source As New BindingSource()
Private dgv1_Adapter As New MySql.Data.MySqlClient.MySqlDataAdapter()
Private dgv2_Source As New BindingSource()
Private dgv2_Adapter As New MySql.Data.MySqlClient.MySqlDataAdapter()
Private dgv3_Source As New BindingSource()
Private dgv3_Adapter As New MySql.Data.MySqlClient.MySqlDataAdapter()
Private dgv4_Source As New BindingSource()
Private dgv4_Adapter As New MySql.Data.MySqlClient.MySqlDataAdapter()
Private Sub MainLoad(sender As Object, e As EventArgs) Handles MyBase.Load
'Grid 1
dgv1.DataSource = dgv1_Source
Dim selectCommand As String = "SELECT * FROM Table1"
dgv1_Adapter = New MySql.Data.MySqlClient.MySqlDataAdapter(selectCommand, SQL_ConnectionString)
Dim commandBuilder As New MySql.Data.MySqlClient.MySqlCommandBuilder(dgv1_Adapter)
Dim table As New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dgv1_Adapter.Fill(table)
dgv1_Source.DataSource = table
'Grid 2
dgv2.DataSource = dgv2_Source
selectCommand = "SELECT * FROM Table2"
dgv2_Adapter = New MySql.Data.MySqlClient.MySqlDataAdapter(selectCommand, SQL_ConnectionString)
commandBuilder = New MySql.Data.MySqlClient.MySqlCommandBuilder(dgv2_Adapter)
table = New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dgv2_Adapter.Fill(table)
dgv2_Source.DataSource = table
'Grid 3
dgv3.DataSource = dgv3_Source
selectCommand = "SELECT * FROM Table3"
dgv3_Adapter = New MySql.Data.MySqlClient.MySqlDataAdapter(selectCommand, SQL_ConnectionString)
commandBuilder = New MySql.Data.MySqlClient.MySqlCommandBuilder(dgv3_Adapter)
table = New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dgv3_Adapter.Fill(table)
dgv3_Source.DataSource = table
'Grid 4
dgv4.DataSource = dgv4_Source
selectCommand = "SELECT * FROM Table4"
dgv4_Adapter = New MySql.Data.MySqlClient.MySqlDataAdapter(selectCommand, SQL_ConnectionString)
commandBuilder = New MySql.Data.MySqlClient.MySqlCommandBuilder(dgv4_Adapter)
table = New DataTable()
table.Locale = System.Globalization.CultureInfo.InvariantCulture
dgv4_Adapter.Fill(table)
dgv4_Source.DataSource = table
End Sub
Private Sub CellValueChangedEvent(ByVal sender As DataGridView, e As DataGridViewCellEventArgs) Handles dgv1.CellValueChanged, dgv2.CellValueChanged, _
dgv3.CellValueChanged, dgv4.CellValueChanged
Try
'Perform Calculations
SaveAll() 'This one does not work. No errors are thrown.
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub ButtonClickEvent() Handles Button1.Click
SaveAll() 'This one works
End Sub
Private Sub SaveAll()
dgv1_Adapter.Update(CType(dgv1_Source.DataSource, DataTable))
dgv2_Adapter.Update(CType(dgv2_Source.DataSource, DataTable))
dgv3_Adapter.Update(CType(dgv3_Source.DataSource, DataTable))
dgv4_Adapter.Update(CType(dgv4_Source.DataSource, DataTable))
End Sub
【问题讨论】:
标签: vb.net datagridview ado.net