您將不得不創建一個撤消堆棧。在數據表的每個編輯操作之後填充此堆棧,並使用足夠的信息將其撤消。然後提供一種機制以相反的方式在堆棧中執行操作。
說,你的表中有兩列,int c1和varchar c2。爲了提示你,下面是一些示例類。
struct ColData{
int c1;
string c2;
};
class Action {
public abstract bool Undo(){}
public abstract bool Redo(){}
}
class AddAction : Action{
ColData data;
public AddAction(ColData d){data = d;}
public override bool Undo(){
//remove the row
//identify it with info from local field 'data'
}
public override bool Redo(){
//add the row with info from local field 'data'
}
}
//other actions like Delete, Update
等等所有其他動作。對於編輯操作,您可能需要兩組列值:舊的和新的,以便您可以前後重複更改。 每次您進行更改時,都會將相應的操作推送到操作堆棧上。當被要求撤消時,你將它從撤消堆棧中彈出,將其稱爲撤消方法,並將其推入重做堆棧。如果你被要求重做一些動作,你從重做堆棧彈出,調用重做,推動撤消堆棧。 當你有另一個新的動作時,你應該清除你的重做堆棧並將新動作推送到撤消堆棧。
嗨,我不能得到它,因爲我是一個初學者plz tel任何其他方式 – ush 2009-10-28 06:38:29
恐怕沒有其他方式,據我所知。 DataTables只是不存儲那麼多的信息。你將不得不做一些嚴肅的編程。從這裏開始:http://msdn.microsoft.com/en-us/library/w9y9a401%28VS.80%29.aspx – 2009-10-28 08:07:48
非常感謝你 – ush 2009-10-28 09:14:47