ClientDataSet删除行,该行为什么消失了,而不是状态为usDeleted?
我使用了cxGrid,其中cxGridDBTreeView(实例名tvLIST)绑定ClientDataSet。
删除部分代码如下:
begin
if Application.MessageBox('确定要删除该行吗?','删除行确认',MB_OKCANCEL)=ID_CANCEL then
Exit;
tvLIST.DataController.DeleteFocused;
//ClientDataSet1.Delete; //此外也试过这个语句
end;
但是删除后,遍历ClientDataSet,发现该行找不到了。RecordCount也少了。
我也试过在界面选择该行,按Del键,cxGrid有一个删除确认;删除后,该行也是一样从ClientDataSet中消失了。
而我希望做到的是,把删除行的UpdateStatus标记为usDeleted,并隐藏显示;在保存时遍历ClientDataSet,把usDeleted的记录通过SQL语句在数据库中删除。
请问应该怎么做? ClientDataSet usDeleted Delphi
[解决办法]
再放一个ClientDataSet2,用ClientDataSet2.Data=ClientDataSet1.Delta;
while not ClientDataSet2.Eof do
case ClientDataSet2.UpdateStatus of
usDeleted:
XXX