1.已开启了 Undo/Redo 功能;
2.请任意作增删改操作,然后点击工具条的 Undo/Redo 按钮,查看数据恢复情况;




1.源码比较简单:
function OnReady(id)
{
 AF.func("Build", "treelist/orders.xml \r\n ListTreeSwitchAble=false; isHighLightModified=true; isHighLightNewRow=true");
 AF.func("load", "treelistdata/orders.txt \r\n FadeInStep=0");
 AF.func("deleteRows", "10\r\n100");
 AF.func("ResetChanged", "");
 AF.func("OpenFreeformBar","treelist/undoredo.xml \r\n tBar");  //打开topBar
 //开启Undo
 AF.func("EnableUndo", "");
 RefreshUndoButtonState();
}
 
function OnEvent(id, Event, p1, p2, p3, p4)
{
 if(Event == "UndoState") {
  //Undo/Redo状态有变事件
  RefreshUndoButtonState();
 }
 else if(Event == "ButtonClicked") {
  //Undo/Redo按钮点击事件
  if(p1 == "btn1" || p1 == "btn2") {
   AF.func(p1 == "btn1" ? "undo" : "redo", "");
   RefreshUndoButtonState();
  }
 }
}
 
//取得UndoAble、RedoAble,将状态体现到工具条按钮
function RefreshUndoButtonState()
{
 var b = AF.func("UndoAble", "");
 AF.func("tBar.SetObjectProp", "btn1 \r\n enable \r\n" + (b==true ? "true" : "false"));
 b = AF.func("RedoAble", "");
 AF.func("tBar.SetObjectProp", "btn2 \r\n enable \r\n" + (b==true ? "true" : "false"));
}