2008-10-01 113 views
4

我有一个简单的Web窗体,它有几个字段和一个GridView。我也有一个保存和取消按钮。ASP.net Web应用程序撤消支持

我想要一种方法来撤消对用户按下取消时窗体上的数据所做的操作。然而,这对于字段来说很简单,因为对gridview的更改实时发生在我不知道如何获取撤消功能的数据库上。

我曾经想过在gridview中存储gridview的更改,但我宁愿不要因为额外的空间需求。

我也想过一个临时表,它将存储所做的更改,然后根据需要将它们回滚。

有没有人有一个想法如何从窗体中获取撤消功能?

回答

2

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

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

0

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

1

最简单的解决方案是,在用户点击“保存”按钮之前,不要将gridview中的更改提交到数据库。

如果您确实决定使用视图状态或其他方式来记录您稍后将撤消的更改,请不要忘记采取相同的预防措施:更新您在进行初始更改时会遇到的冲突。

0

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

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

它不会给你多级撤消......虽然我想你可以保存多个会话对象,如果你真的需要。