2015-07-21 89 views
0

我正在使用datagridview来显示表格数据并更改特定单元格的值。根据需要,我可能需要将这些值更改为多行。VB.Net影响对表格的更改

我想使用datagridview1.CellValueChanged来填充数据集(即创建所做的更改的集合),然后通过单击命令按钮保存更改。

我的问题是,尽管对于每次更改,只有最后一次更改被保存才被调用。我正在考虑使用数据集来存储更改值的多个记录,然后保存数据库表中数据集中的所有行(使用更新)。

难道有一些解决方案来解决我的困境。

PS。在尝试这个(ADO.net数据集)之前,我正在更新一个临时表,然后使用它来更新数据库。

感谢您的解决方案。

代码:::
私人小组dGridVwCreaCode_CellValueChanged(BYVAL发件人为对象,BYVALË作为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”)。行(1).Item( “Code_Descrip”)= var_CodeShtText_Changed

要保存(从Button_Click被称为以下子)的变化: 私人小组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

你可以发布你的代码吗? – Saragis

回答

0

什么,我就被递增 “行” 错过计数的代码行:

ds_CodeShtText_Changed.Tables( “Code_SAP”)行(rowNum_Increment - 1).Item( “Code_Descrip”)= var_CodeShtText_Changed。

因此,每当用户更改特定单元格中的数据时,行数以“1”递增并收集到数据集中。

相关问题