hur.cn - 华软网

 热门搜索

关于grid风格的数窗中使用下拉窗口的问题

  作者:未知    来源:网络    更新时间:2019/1/5
在一个grid气概的数窗中,我有两列运用了下拉数据窗口,其中后一个下拉数据窗口将会根据第一个下拉数据窗口来举行检索

我运用的部份代码以下:
ldw_child.SetTransObject(sqlca)
ldw_child.reset()
ldw_child.retrieve()
ldw_child.SetFilter("vid = " + data + "")
li_code = ldw_child.Filter()
ldw_child.setredraw( true)
SetNull(ls_specs)
this.object.specs[row] = ls_specs

===============================

现在头痛的问题来了,这类方式在只有一行的数据窗口中没问题,以前我都是用在free气概中的

现在如果是多行的话,某一行的第一个下拉窗列值改变会影响到所有行第二个下拉窗口的值

举个例子吧,设为两个列为,col1,col2
假定col1的下拉值是A, B,而A对应col2的 1,2,B对应col2的 3,4

我在第一行选中A后,col2的下拉值为1,2

这时我在第二行选中B,这时第二行的col2的值酿成了3,4,这是对的,但由于这类定义的方式,影响到如果我再修改第一行的col2,下拉值也只可看到3,4,而第一行的col1的值是A的,这就有问题

我感觉这个问题很难解决啊,谁解决过这样的问题,请多指教

谢谢!

------华软网友回答------
有什么问题?你如何想修改col2,哪就先修改col1吧!  
比如 col2是3,4 你想改成1或2 , 你就必需先改col1,这也很正常呀, 由于你改了col2的话,col1也必需改变! 所以你先修改col1再修改col2也是正常的流程.
------华软网友回复------
当你选择另一行col2的时候先根据该行col1里的值重新将col⒈的值filter一次。
------华软网友回复------
是否我没说清楚这个问题,不是这么简单的

某一行的的col1的值变了,那么所有行的col2的下拉值都被修改了,

如我举的例子,第一行的col1是A,那么第一行的col2的下拉值应该一直是1,2

这时我增加第二行,而且col1的值是B,那么不但第二行,连第一行的col2的下拉值都酿成了3,4,而此时第一行的col1值依然是A
------华软网友回复------
这类模式的问题出在有多条记录,而下拉窗口的过滤对所有记录都会起到作用,这就是问题

由于是通过代码来过滤,显示的是汉字,所以一旦某一行发生对了col2的过滤,其余行没有该代码的col2值就不会显示汉字,而把原始代码显示出来
------华软网友回复------
哦,终于明白楼主的问题.
你在col2获得焦点时,根据这行的col1的值,再过虑一次就OK了. 
就是说在ItemFocusChanged中写过虑代码吧
------华软网友回复------
数据窗口中的两个下拉数据窗口怎么实现传送? 

一个freefrom数据窗口,里面有两个字段用下拉数据窗口, 想实现第一个下拉数据窗口选定数据后,第二个下拉数据根据第一个选择的数据更新内容
就好像网页中经罕见到的,前面一个选中省份,第二个自动显示该省的都市


在itemchanged事件里
choose case dwo.name
case ''第一列
datawindowchild idw_b
dw_1.GetChild('pfbh',idw_b)
idw_b.SetTransObject(sqlca)
idw_b.retrieve(data)
end choose

------华软网友回复------
遇到过,没有好的解决方法!关注
------华软网友回复------
这类情况就不要运用下拉了,直接多表联系关系取值来显示,当然如果要提供编辑保存就没措施了
------华软网友回复------
lzheng2001(1加1)的提法解决了每次点中列时候的过滤问题

不过照旧没能完全解决显示问题,就是在某一行过滤数据窗口的时候,其余行的显示值被过滤,就出现了原始的代码,而不是display的项目

我想了种方式,我能不能重新设置一下其余行的显示值呢?

就在记录下各行的当前显示值,然后赋值强制显示,这样能够吗?
------华软网友回复------
关注
------华软网友回复------
这么麻烦不如另外做一个DW用来实现DDDW的效果,只是计算一下坐标,即可显示出来,其实很容易实现,效果绝对比DDDW好! 对照复杂的情况我一直都是这样用的,很少用DDDW!
------华软网友回复------
照旧手工来吧,用游标(或DW)把COL2的值检索出来,然后一个一个增加上去      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。