能否按行来retrieve一个数据窗口里的子数据窗口???

beyondxuwei 2004-10-08 10:49:15
在gid风格的数据窗口中,我有一个关联下拉菜单,会根据我选择的A的内容,来显示不同的B列表,现在有一个问题就是,当我其中的任何一行的A的内容修改后,所有行的B的下拉菜单都会根据这一行A的内容来的。
datawindowchild ldwc_item,ldwc_item1
li_cnt=Integer(data)
this.getchild('colorid',ldwc_item)
ldwc_item.settransobject(sqlca)
ldwc_item.retrieve(li_cnt) //这一行retrieve能不能加入行号,我不想影响其它行
...全文
199 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangjildy 2004-10-08
  • 打赏
  • 举报
回复
你可以在离开该列时马上把过滤条件设为空,不要用retrieve函数,用setfilter和filter,
否则会造成巨大的网络流量,可能会使服务器不堪重负哦.
yzh963 2004-10-08
  • 打赏
  • 举报
回复
如果只有B需要跟据A来取得数据,可以在当前行用setfilter()来实现,不要用retrieve(),去掉参数
将ldwc_item.retrieve(li_cnt)换成下面两行
ldwc_item.setfilter("条件")
ldwc_item.filter()
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
我现在遇到的问题是,我选择其中一行的A项,所有行的B下拉菜单都会变,这显然是不合理的
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
我现在遇到的问题是,
fibbery 2004-10-08
  • 打赏
  • 举报
回复
你在javascript中所赋值的是独立的,而在数据窗口中的dddw是关联的就那么一个子数据窗口(一个数据集合)。
jacksu19 2004-10-08
  • 打赏
  • 举报
回复
楼主,你的做法有什么问题呢?
或许楼主已经遇到问题了。
实在是没有什么好办法,我是用了一个笨办法:增加了一计算列。该列等于你当前的b列。
然后,当前列显示的是B列,而非当前列显示的是计算列
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
那这个大哥有没有什么好的建议,我的目的是能达到关联下拉菜单,而且修改其中一行时,不影响其它行。是不是可以像javascript里的关联下拉菜单那样,先全部检索出来存在数组,再根据所选的内容对下拉菜单赋值?
fibbery 2004-10-08
  • 打赏
  • 举报
回复
我觉得你的思路不太好.不知道是否真的有必要让子数据窗口重新检索.
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
放到rowfocuschanged事件中也没用的,影响其它行是由
ldwc_item.setfilter()过滤引起的,怎样能只过滤我选择的那一行就好了
huangxinru 2004-10-08
  • 打赏
  • 举报
回复
把代码放到dw的rowfocuschanged事件中
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
怎么还是会影响其它行的下拉菜单啊??
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
ldwc_item.setfilter("条件")里的条件是不是对应数据窗口里sql的条件??
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
我在数据窗口的itemchanged事件的代码是这样的,现在关联总是不起作用

choose case dwo.name
case "stoneid"
int li_cnt
datawindowchild ldwc_item,ldwc_item1
ldwc_item.setfilter ('')
this.getchild('colorid',ldwc_item)
ldwc_item.setfilter(data)
ldwc_item.filter()
end choose
  • 打赏
  • 举报
回复
在代码最后清空过滤条件或是检索参数,如:

dw_XX.setfilter ( '') 或
dw_XX.setSQLselect ( "" )
beyondxuwei 2004-10-08
  • 打赏
  • 举报
回复
现在是不会影响其它行了,但是下拉菜单的内容不会变了,不关联了
代码这样写的:
this.getchild('colorid',ldwc_item)
ldwc_item.setfilter(data)
ldwc_item.filter()
data即为所要传的参数,好像不起作用一样
数据窗口源码介绍 (举例见d_dbit_example.srd,测试数据库为PB自带的EAS Demo DB V120) 1.第一行:release 12; 数据窗口所属PB的版本号,如果想把高版本的datawindow导入低版本的PB中要修改此数字; 2.datawindow()行 通常用修改processing属性,可以把你的数据窗口由grid变成freeform或其它类型 例:freeform:0 grid:1 3.header()行 可以整行复制粘贴,并命名为header[1],header[2],这样可以让数据窗口有多个header 4.table()行 这全是定义的数据属性,是setitem,update,object.data等方法访问的根源 如果存在table()的column,数据窗口可以不存在任何对象,仍然可以访问数据窗口数据 如果想创建一个空的数据窗口,可以只定义: release 12; table() 5.table(column行) 是第几个column,它的ID就是多少,其中也定义了是否可以update时和更新到数据表的字段名 6.table(retrieve行) 检索数据时使用的SQL语句,可以通过setsqlselect或modify("table.sqlselect")方法去动态修改 修改后要重新定义数据窗口的更新属性 7.column()行 id即是对应table(column行)的行次,名称(name)可以随便命名,也可以没有,则默认为table(column行)的name 8.compute()行 计算列,可以通过表达式计算显示特定值(具体函数可以见共享的画笔函数). 9.text()行 有时可以代替计算列; 通过定义text的表达式,可以实现一列中显示两个字段值,注意结果必须要转换成string类型(而column和compute则不行); 10.htmltable()行 按照格式导出(saveas)html文件,为了保证格式的完整,数据窗口的单位最好设置成pixels GenerateCSS='1' //保持格式及颜色 Border='0' //不要table边框 CellSpacing='0' //单元格无间距(此项在界面上经常设置不上) 注: (1)Grid生成标签,Freeform生成
+ 标签; (2)生成htmltable时,不知为何会在CSS中的开始自动加一个分号";",导致excel等浏览器打开不能正常显示格式; (3)band为foreground或background的对象导不出来,可以动态修改后再导出. 11.export.xml()行 定义导出xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 12.import.xml()行 定义导入xml文件的格式,并为模板保存名称 使用时一定要设置usetemplate值 13.表达式介绍 略 14.其它也略

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧