FireDAC 学习 - 6:CachedUpdates 模式下查看被删除的记录

探讨FireDAC组件中使用CachedUpdates特性时,如何通过设置FilterChanges属性展示已删除记录,以便用户能Undo删除操作。文章详细介绍了解决方案,包括在DbGrid中显示删除状态的记录,以及通过增加计算字段和按钮事件实现显示与隐藏被删除记录的功能。

概念

前面的文章 FireDAC 学习 - 5 讲到,将 FdQuery 和 FdMemTable 的 CachedUpdates 设置为 True,然后在 FdMemTable 里面编辑后,可以读取到编辑改动的记录,将编辑改动过的记录输出为 Stream,再通过网络将 Stream 送给 FdQuery 然后提交到数据库。

CachedUpdates 方式下,所有对 FdQuery 或者 FdMemTable 里面的记录的修改,比如用户在绑定的 DBGrid 里面对数据做的修改,都缓存在内存里面,用户可以随时对修改进行 Cancel 等操作(类似于一个 Undo 操作),直到执行了 ApplyUpdates 才会真正写入数据库。

问题

用户在 DGBrid 里面对数据进行操作,修改了一条记录的某个字段的内容,或者新增了几条记录,用户都是能看到的。但删除的记录,用户看不到。如果用户想 Undo 删除的记录,用户如果看不到,想不起来之前删除的是哪条记录,不知道是否该 Undo,怎么办?

解决方法

FdMemTable 有一个属性:FilterChanges,这是一个集合属性。在设计期属性面板可以看到:

 

这里默认没有 rtDeleted,如果把 rtDeleted 加入集合(属性面板里面把 False 改为 True),则即使删除掉的记录,在 DBGrid 里面也显示。

不过这样带来一个界面反馈的问题,删除了一条记录,DBGrid 里面它仍然显示,用户搞不清楚刚才那个删除操作成功了没有,会把人搞糊涂。

一个办法是为 FdMemTable 加上一个计算字段,用于显示每条记录的状态,这样即使该记录存在,状态显示为删除,用户就不会被搞糊涂。当当当,先看效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值