以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于BeforeDrawRow事件的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81736)

--  作者:jialihaha
--  发布时间:2016/3/4 15:45:00
--  关于BeforeDrawRow事件的问题
BeforeDrawRow  这个事件需要表格显示时才会执行绘制,如果表格很长,不滚动下去,代码就不会执行,单元格里都是空的,这样会影响对表格的排序与筛选,有什么更好的方案解决呢?
[此贴子已经被作者于2016/3/4 15:46:27编辑过]

--  作者:大红袍
--  发布时间:2016/3/4 15:48:00
--  
 没看懂你意思,具体例子。
--  作者:jialihaha
--  发布时间:2016/3/4 15:53:00
--  
比如订单明细里,有个列是产品ID,但是想要显示一个产品编号,我做法就是加个临时列,这样就得去查找产品表,通过改行的产品ID查找出对应的产品编号,通过绘制方式写进这个临时的产品编号列


--  作者:大红袍
--  发布时间:2016/3/4 15:56:00
--  

 为什么不写到drawcell事件?而且你也可以强制刷新表格的。

 

Tables("").Refresh


--  作者:jialihaha
--  发布时间:2016/3/4 15:59:00
--  
drawcell   只能改变显示的文本,而不能写入真实的值,进入单元格后,会是空的
[此贴子已经被作者于2016/3/4 15:59:15编辑过]

--  作者:大红袍
--  发布时间:2016/3/4 16:01:00
--  

1、写入真实的值应该在datacolchanged事件做;

 

2、drawcell就只是用来改变样式的,不要赋值。


--  作者:jialihaha
--  发布时间:2016/3/4 16:04:00
--  
你看清楚我说的业务,我是用代码增加的临时列~~~~有个列是产品ID,但是想要显示一个产品编号,我做法就是加个临时列,这样就得去查找产品表,通过该行的产品ID查找出对应的产品编号,写进这个临时的产品编号列
换个订单,明细刷新后,产品ID这一列值从数据库查出来,需要通过这个ID,将对应的产品编号写进临时列
[此贴子已经被作者于2016/3/4 16:06:25编辑过]

--  作者:大红袍
--  发布时间:2016/3/4 16:06:00
--  
 在datacolchanged做有什么问题啊
--  作者:大红袍
--  发布时间:2016/3/4 16:06:00
--  
一开始,你就可以重置列,或者直接赋值啊。你用drawcell循环的赋值,程序不卡死才怪
--  作者:jialihaha
--  发布时间:2016/3/4 16:07:00
--  
我也没有循环赋值啊,我就是借用BeforeDrawRow 的机制,去绘制显示出来的行 
你不可能让用户每次都去重置列吧
[此贴子已经被作者于2016/3/4 16:08:20编辑过]