2008-10-01 76 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()

它不會給你多級撤消......雖然我想你可以保存多個會話對象,如果你真的需要。