我的项目是订单应用程序,用户可以使用UltraGrid
输入和编辑数据,从而输入来自不同客户的订单。当在键盘上按下Delete键时,它会提示MsgBox
用户确认他们要删除所选行,如果是,则会运行DELETE
查询以从中删除该行数据库中。
我还有一个“保存”按钮,允许用户保存对订单所做的订单/更改。理想情况下,我只希望网格中的行暂时删除,因为如果用户没有保存订单,则不应从数据库中永久删除订单行。
如果我将DELETE
查询放入一个单独的子例程中,我可以从我的类中调用这个子例程,将其保存为事务的一部分吗?
这似乎无法正常工作,因为我不仅需要调用查询,而且还会以某种方式暂时将已删除的行存储在某处,以便它知道要在事务中删除哪些数据,以及一个Boolean
变量来告诉它是否有任何数据要删除......
有没有更简单的方法呢?上述方式是否有效?
答案 0 :(得分:2)
对它进行排序......根本不需要任何复杂的操作,只需要更改代码,如下所示:
Try
Dim Dc As New OleDbCommand
Dim rowcode As String = ""
rowcode = dr.Item("Product_Code").Value
更改为:
Try
Dim Dc As New OleDbCommand
Dim rowcode As String = ""
rowcode = dr.Item("Product_Code", DataRowVersion.Original)
答案 1 :(得分:1)
最简单的方法是将所有更改保留在内存中(添加,修改和删除),然后在点击“保存”按钮时将它们同步到数据库。
可能,您需要使用AJAX操作将操作添加到服务器端,并使用客户端脚本来更新网格上的行。
答案 2 :(得分:1)
网格不适用于后端数据库。它只处理其本地DataSource。因此,当您将数据保存回数据库时,请检查已删除的行并保留它们。
如果您只想在保存按钮上更新本地数据源,可以将网格UpdateMode设置为OnUpdate。然后,您需要调用grid UpdateData方法。同样,这将更新您的本地数据源。本地数据源如何以及何时更新后端数据库与网格没有任何共同之处。因此,根据本地数据源的类型,您需要在将更新的数据发送回数据库之前处理已删除行的检查。