起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 435|回复: 16

【结贴】[问题]如何刷新DocView的内容[满意解决]

[复制链接]
发表于 2008-2-27 10:22:50 | 显示全部楼层 |阅读模式
现在遇到这样一个问题:

当DocView的数据集移动到下一条记录的时候 DocView的内容不刷新
这个时候如果把鼠标移动到显示字段处并点击使其获得焦点 则会只更新这个字段的记录 其它字段并不变
麻烦问下 如何在移动到下一条记录的时候控制刷新DocView中全部的显示字段
我记得以前是自动就会更新的 现在不知道怎么这样子了

使用DocView.ReFresh;的话没有效果
使用DocView.ReFreshDoc(true); 有太明显的过渡 中间会出现全部DocView变空白的一个状态

问有没有其它的好办法 谢谢~
回复

使用道具 举报

发表于 2008-2-27 10:41:18 | 显示全部楼层
请问
1、你是怎么移动记录的?
2、文档上的内容有更新?更新的是字段对应的单元格的值吗?是怎么更新的?如果不是字段对应的单元格的值,那么只能用后者刷新了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-27 10:58:17 | 显示全部楼层
最初由 atiger 发布
[B]请问
1、你是怎么移动记录的?
2、文档上的内容有更新?更新的是字段对应的单元格的值吗?是怎么更新的?如果不是字段对应的单元格的值,那么只能用后者刷新了。 [/B]


1.用DataNavigator导航栏 或者 DataSet.Locate();移动的;
2.没有更新的内容 只是用来显示。 我的意思是记录变化后DocView上没有刷新显示新纪录 而是要把鼠标移动过去 然后点一下才刷新 但是刷新的只是点的那个单元格对应的字段 没有把所有字段对应的都刷新

是一个表格文档
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-27 11:01:35 | 显示全部楼层
顺便说一下 我用代码赋值了 表格文档中DataSetBroker.DataSet 的 SQL语句

是不是跟这个有关啊 记得以前直接设置的时候是好使的 用DataNavegator 或者 DataSet.Locate 控制的时候 都可以自动就刷新记录
回复 支持 反对

使用道具 举报

发表于 2008-2-27 12:00:09 | 显示全部楼层
1.用DataNavigator导航栏 或者 DataSet.Locate();移动的;
如果这样,不会出现Docview不刷新的

2、我用代码赋值了 表格文档中DataSetBroker.DataSet 的 SQL语句
不会有关系,不过还是请把这部分代码帖出来我看看

另外,请帖两个图,一个是鼠标没有移动到显示字段处,另一个是把鼠标移动到显示字段处并点击使其获得焦点
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-27 17:15:16 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2008-2-27 17:35:24 | 显示全部楼层
楼主6楼啥意思,没有任何文字和图片哦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-28 09:26:36 | 显示全部楼层
最初由 atiger 发布
[B]楼主6楼啥意思,没有任何文字和图片哦 [/B]


var   
     ExtraContractDataSet : TSQLDataSet;
     .........

     ExtraContractDataSet := TSQLDataSet(InfoBrokerPROJECTINFO.Info.DataSetByID(ExtraContract))

     ExtraContractDataSet.SQL.Text := 'Select * From TProject Where (IsCurrent = 1)';
     
     INFO_CONTRACTINFO.TDOC_ExtraContractInfo(DocViewExtraContractInfo.Doc).DataSetBroker.DataSet.Next;
     
     DocViewExtraContractInfo这个表格文档的DataSet设置的是信息中层中的数据集ExtraContract
     此时 显示的文档DocViewExtraContractInfo无任何反应
  点击其中的某个字段 则发生改变 其它的都不变 图我就不贴了
  
  麻烦看下这么用是不会有问题啊
回复 支持 反对

使用道具 举报

发表于 2008-2-28 09:36:18 | 显示全部楼层
1、修改SQL语句前后,怎么没有关闭和重新打开数据集呢?
2、感觉你的代码写的好复杂,你直接拖一个DataSetBroker1,连接到要修改的数据集上,然后直接修改就可以了
DataSetBroker1.DataSet.Close;
TSQLDataSet(DataSetBroker1.DataSet).SQL.Text := 'Select * From TProject Where IsCurrent = 1';
DataSetBroker1.DataSet.Open;

如果你没有重新打开数据集,这个SQL赋值是没有意义的,不会出现选中字段才修改的现象
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-2-28 09:42:06 | 显示全部楼层
最初由 atiger 发布
[B]1、修改SQL语句前后,怎么没有关闭和重新打开数据集呢?
2、感觉你的代码写的好复杂,你直接拖一个DataSetBroker1,连接到要修改的数据集上,然后直接修改就可以了
DataS..

以下省略...... [/B]


1.修改SQL语句前后 有关闭和打开数据集的语句 刚才忘了写上了
2.这些代码是在功能层的 所以看起来很复杂 其实就跟你写的那个一模一样

现在也不知道问题可能出在哪 唉
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-7 15:29 , Processed in 0.039972 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表