我正在使用datagridview来显示表数据和更改特定单元格的值。根据要求,我可能需要为多行更改此类值。
我正在尝试使用datagridview1.CellValueChanged来填充数据集(即创建所做更改的集合),然后通过单击命令按钮保存更改。
我的问题是,虽然每次更改都会调用sub,但只保存最后一次更改。我在考虑使用数据集来存储更改值的多个记录,然后在数据库表中保存数据集中的所有行(使用Update)。
能否解决我的困境?
PS。在尝试这个(ADO.net数据集)之前,我正在更新一个临时表,然后使用它来更新数据库。
请感谢解决方案。
代码:::
Private Sub dGridVwCreaCode_CellValueChanged(ByVal sender As Object,ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)处理dGridVwCreaCode.CellValueChanged
Dim qryStr_CodeShtText_Changed As String
Dim var_CodeID_Changed As Long
var_CodeID_Changed = dGridVwCreaCode(e.ColumnIndex - 2, e.RowIndex).Value
qryStr_CodeShtText_Changed = "SELECT Code_ID, Code, Code_Descrip FROM Code_SAP " & _
"WHERE (Code_SAP.Code_ID = " & var_CodeID_Changed & ")"
var_CodeShtText_Changed = dGridVwCreaCode(e.ColumnIndex, e.RowIndex).Value.ToString
If Not CatGenieConnPublic.State = ConnectionState.Open Then
CatGenieConnPublic.Open()
End If
da_CodeShtText_Changed = New OleDb.OleDbDataAdapter(qryStr_CodeShtText_Changed, CatGenieConnPublic)
da_CodeShtText_Changed.Fill(ds_CodeShtText_Changed, "Code_SAP")
cb_CodeShtText_changed = New OleDb.OleDbCommandBuilder(da_CodeShtText_Changed)
ds_CodeShtText_Changed.Tables(“Code_SAP”)。Rows(1).Item(“Code_Descrip”)= var_CodeShtText_Changed
保存更改(从Button_Click调用sub后): Private Sub Save_Changed_CodeShtText() da_CodeShtText_Changed.Update(ds_CodeShtText_Changed,“Code_SAP”) MsgBox(“更改保存到数据库....”,vbOKOnly + vbInformation)
If CatGenieConnPublic.State = ConnectionState.Open Then
CatGenieConnPublic.Close()
End If
'SET BOOLEAN TO FALSE AS CHANGED VALUES HAVE BEEN SAVED
bool_CellVal_HasChanged = False
End Sub
PS。不知何故,我无法将所有代码行放在一起,请原谅我。
答案 0 :(得分:0)
我错过的是增加代码行中的“行”计数:
ds_CodeShtText_Changed.Tables(“Code_SAP”)。行(rowNum_Increment - 1).Item(“Code_Descrip”)= var_CodeShtText_Changed
因此,每当用户更改特定单元格中的数据时,行号将以“1”递增并收集在数据集中。