ASP.net Web App撤消支持

时间:2020-03-06 15:00:12  来源:igfitidea点击:

我有一个简单的Web表单,上面有几个字段和一个gridview。我也有一个保存和取消按钮。

我想一种方法来撤消当用户按"取消"时对表单上的数据所做的操作。这对于字段来说很简单,但是由于对数据库的Gridview更改是实时发生的,因此我不知道如何获取撤消功能。

我曾想过将对gridview的更改存储在viewstate中,但我不希望因为额外的空间需求而已。

我还想到了一个临时表,该表可以存储更改,然后根据需要将其回滚。

有谁知道如何从表单中获取撤消功能?

解决方案

一种方法是将对表的更改与该应用程序实例的时间戳和标识符一起存储在另一个表中。如果我们要撤消自特定时间以来的更改,则只需向后遍历列表,直到该标识符的该日期为止。

将所有数据保留在会话对象中,并在准备好后将其写入数据库。如果抽象数据层,则可以使用与会话对象进行交互的ObjectDataSource。

我目前正在电子商务网站的结帐系统上使用此方法。我将数据存储在模仿数据库模式的自定义对象中。

最简单的解决方案是直到用户单击"保存"按钮,才将gridview中的更改提交到数据库。

如果我们确实决定使用viewstate或者类似的东西来记录我们稍后将撤消的更改,请不要忘记采取相同的预防措施,例如:更新发生初始更改时的冲突。

嗯...将数据对象加载到会话中,并从(MyObject)Session [" MyObject"]对象中绑定控件。我相信我们可以连接到ObjectDataSource来使用会话...然后可以覆盖Update事件,以便将更改写入会话。

当用户单击"保存"时,获取会话对象并将其保存:MyObject obj =(MyObject)Session [" MyObject"]; MyObject.Save()

它不会为我们提供多个级别的撤消...尽管我猜我们确实需要的话可以保存多个会话对象。