例如我点了撤销按钮然后一步一步把之前每一列的数据退回来,直到退到没有了,就返回初始界面。这个怎么实现?UNDO()这东西没有作用。
数据 数据窗口
------解决方案--------------------
可以自己另外加个隐藏的DW
对目标DW的操作,itemchanged事件 或者 insertrow、deleterow操作后,把原数据,和操作后的数据都存储到隐藏的DW中。
你想后退的时候,就从隐藏的DW的最后一行开始判断,自己写回退功能。
------解决方案--------------------
我认为做是可以做,不过很麻烦。
思路就是对DW 每操作一次时,用一个datastore 表格记忆它操作前后的数据及状态。在撤销时读取该Datasore 的相应行次做恢复或重做处理。
麻烦的是对DW 的操作方式太多了,不光是从键盘录入,还可以用代码写入数据,不光是只争对单元格的写入,还有对行次的增删。。。
非要做的话,LZ慢慢想吧。
------解决方案--------------------
我觉得用几个数组存一下 列名 原值 和新值
在itemchanged时间里面 把数据记录下来
撤销时直接通过数组反着处理回来就可以了
------解决方案--------------------
這類似於 資料結構(data structure)的 堆疊(Stack)處理
編輯中的窗口: dw_1
堆疊datastore: ds_stack
dw_1的 itemchanged event, 將變更前的原值 與 欄位名,
push進 ds_stack (使用insertRow(1)即為push )
需undo時, 則pull ds_stack的資料回填至dw_1
如此即可逹到您的要求