挑战!超级难题,两个DBGrid连接同一个DataSource显示同步问题。(100分)

  • 主题发起人 主题发起人 paul_1922
  • 开始时间 开始时间
P

paul_1922

Unregistered / Unconfirmed
GUEST, unregistred user!
我用两个DBGrid连接同一个数据源,一个无垂直滚动条用于前端列锁定,一个用于显示除锁定列外的其它列。在处理(查询)数据时,前端锁定的DBGrid在ClientDataSet处理数据时显示不变,处理完数据后直接显示结果数据;另一个DBGrid在ClientDataSet处理数据时显示空白,处理完数据后再显示结果数据;造成两个DBGrid显示不同步。请问各位高手,怎样才能使两个DBGrid同步显示?
 
一个暂存,一个同步
 
有你费尽找方法同步dbgrid的时间,你用其他方法早搞定了。
 
楼主的目标要达到,可以在ClientDataSet的AfterPost事件里,调用ClientDataSet的刷新Refresh方法,刷新界面。

不过,建议楼主一个想法:
同步的思想,是原来在单机上的一种解题思路。现在,所有解题方向都向分布式计算发展,不可能保证两台机器的数据一直同步,只要在适当的时候,进行适当的刷新就可以了。最典型的就是BBS系统啊。

一点小建议。

GOOD LUCK!
 
谢谢三位的参与,不过问题没有解决,AfterPost事件调用刷新Refresh方法后还是老样子。也许我问题没有说清楚,换个说法吧:在ClientDataSet处理数据时,如果使DBGrid保持当前显示的数据不变,处理完后直接更新DBGrid的显示.
 
with ClientDataSet do
try
DBGrid2.DataSource:=nil;//这个使得没有锁定列不再显示
DisableControls; //这个使得DBGrid1中的锁定列不变化!
....
finally
DBGrid2.DataSource:=DBGrid2DataSource;//这个使得未锁定列可以显示
EnableControls; //这个更新两个DBGrid。
end;
 
问题还是没解决,我再说详细点,锁定列DBGrid1在没有锁定列DBGrid2内部建立(根据用户需要锁定相应列),通过DBGrid1.DataSource:=Self.DataSource;连接同一数据集。奇怪的是在DisableControls后,锁定列DBGrid1竟然不显示为空白仍显示原数据不变,直到ClientDataSet处理完数据和直接更新显示。
 
你不是要DBGrid1在处理数据时不变化吗,DisableControls作用就是这样,
当然会显示原来的数据!
搞不懂你要什么东西!
 
执行DisableControls,DBGrid在数据集处理数据是会显示为空白(不是显示原有数据)。
 
除非你把数据集关闭,否则是不可能的!
 
你处理十万条记录的数据库试试。
 
非常抱歉,是我没讲清楚,我用的是CLX的组件,没想到和VCL的不太一样,这两天做VCL版本时才知道,给分了。
 
多人接受答案了。
 
后退
顶部