关于datawindowchild和itemfoucschanged事件的问题,我真的没办法了。

phonixman 2003-12-03 02:53:42
录入窗口有一数据窗口dw_1,风格为freeform,某列(收货人名称:shr_mc)的类型为dropdownDW (dw_child),与之对应的列为:收货人纳税识别号,即一个收货人对应一个具体的纳税识别号。我的想法是:对已经输入过且保存成功的收货人名称,只要从收货人名称这一列中选择,然后纳税人识别号这一列自动跳出该收货人对应的纳税人识别号,如果是从未输过的,则不跳出,我原先在该数据窗口itemfocuschanged事件中写脚本,但一打开该窗口,纳税人识别号就自动填上了dw_child中第一行纳税人识别号,而且用鼠标选中某个纳税人后,纳税人识别号并未自动填上。后来我又在itemchanged事件中写了相应的脚本,这样一选上纳税人名称,纳税人识别号是自动跳出了,但从没输过得也跳出了纳税人识别号,我的dw_1中itemchanged脚本如下:

datawindowchild dw_child

string ls_shr_nsrsbh

int li_rtn

choose case lower(dwo.name)
case 'shr_mc'

li_rtn=this.getchild("shr_mc",dw_child)


if li_rtn= - 1 then
messagebox("datawindow","not is a datawindchild object")
return
end if

if dw_child.getrow()>=1 then
ls_shr_nsrsbh=dw_child.getitemstring(dw_child.getrow (),"shr_nsrsbh")

this.setitem(1,"shr_nsrsbh",ls_shr_nsrsbh)
end if

这只是实现了其中的一个自动功能,对没有输入过的则没办法。我试了用setfilter()和retrieve(value)来过滤和检索是否存在该用户名称,但好像很麻烦的样子。请高手帮帮我,对于这样的数据窗口该在什么事件中写脚本?我的脚本应该怎么改?谢谢。
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
klbt 2003-12-03
  • 打赏
  • 举报
回复
你的脚本有问题:dw_child如果不存在的收货人,你不应该设置"shr_nsrsbh"列,应该判断一下,用dw_child.Find()函数实现
phonixman 2003-12-03
  • 打赏
  • 举报
回复
我可能没说清楚,shr_mc列所包含的dropdownDW有两个列:shr_mc,shr_nsrshb,且为allow editing,shr_mc和纳税人识别号为一一对应的关系。另外,该dw_1还有一个自定义事件:ue_enterkey,用以处理回车,避免用tab键。在itemchanged中写上述脚本,用鼠标来选择已经输入过的收货人名称,纳税人识别号能自动跳出。问题是如果新输入的一个收货人名称,即dropdownDW中不存在的收货人名称,回车以后,纳税人识别号还是跳出了。我知道脚本有问题,可不知道怎么处理。
lmby 2003-12-03
  • 打赏
  • 举报
回复
原先在该数据窗口itemfocuschanged事件中写脚本,但一打开该窗口,纳税人识别号就自动填上了dw_child中第一行纳税人识别号
-----
这是因为窗口打开时你就retrieve了,就触发了itemfocuschanged

一选上纳税人名称,纳税人识别号是自动跳出了,但从没输过得也跳出了纳税人识别号
-----
你的收货人名称:shr_mc和纳税人识别号有什么关系?在itemchanged里写是对的。
if dwo.name = 'shr_mc' then
//根据收货人名称和纳税人识别号的关系找纳税人识别号
end if

609

社区成员

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

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