问题描述:
比如有两个表:记录系名的表 t1(比如:计算机系,外语系),记录专业名的表t2(网络,软工,英语,德语)
在窗口中又俩个下拉列表:第一个下拉列表显示表t1的内容, 关键在第二个下拉列表:要求是选计算机系下拉列表2中只能出现网络和软工,选外语系下拉列表2中只能出现英语和德语
谁给下代码最好!!!
------解决方案--------------------
新建一个数据窗口,用外部数据源,放两个列(col_1, col_2),编辑格式为下拉数据窗口
然后在数据窗口的itemchanged事件里写代码
if dwo.name = 'col_1' then
datawindowchild ldwc_2
this.getchild('col_2', ldwc_2)
ldwc_2.settransobject(sqlca)
ldwc_2.setfilter("col_1 = '" + data + "'")
ldwc_2.filter()
end if
------解决方案--------------------
可使用游标对下拉列表的选项初始化:
第一步:
在窗口open事件中编写以下代码:
ddlb_1.reset()
string ls_xm,ls_zym
//使用游标提取系名称初始化ddlb_1(系名下拉列表)
Declare xm_cur cursor For Select 系名 From t1;
Open xm_cur;
Fetch xm_cur into :ls_xm;
IF SQLCA.SQLCode=0 Then
ddlb_1.addItem(ls_xm)
ddlb_1.text=ls_xm
DO While SQLCA.SQLCode=0
Fetch xm_cur into :ls_xm ;
IF SQLCA.SQLCode=0 Then
ddlb_1.addItem(ls_xm)
END IF
Loop
END IF
Close xm_cur;
//使用游标提取专业名称初始化ddlb_2
ls_xm=ddlb_1.text
ddlb_2.reset()
Declare zym_cur cursor For Select 专业名 From t2 where 系名= :ls_xm ;
Open zym_cur;
Fetch zym_cur into :ls_zym;
IF SQLCA.SQLCode=0 Then
ddlb_2.addItem(ls_zym)
ddlb_2.text=ls_zym
DO While SQLCA.SQLCode=0
Fetch zym_cur into :ls_zym ;
IF SQLCA.SQLCode=0 Then
ddlb_2.addItem(ls_zym)
END IF
Loop
END IF
Close zym_cur;
第二步:
在ddlb_1控件的selectionchanged事件中编写以下代码:
string ls_xm,ls_zym
ls_xm=this.text
ddlb_2.reset()
Declare zym_cur cursor For Select 专业名 From t2 where 系名= :ls_xm ;
Open zym_cur;
Fetch zym_cur into :ls_zym;
IF SQLCA.SQLCode=0 Then
ddlb_2.addItem(ls_zym)
ddlb_2.text=ls_zym
DO While SQLCA.SQLCode=0
Fetch zym_cur into :ls_zym ;
IF SQLCA.SQLCode=0 Then
ddlb_2.addItem(ls_zym)
END IF
Loop
END IF
Close zym_cur;
IF ddlb_2.totalitems()>0 THEN //判断ddlb_2是否有选项
ddlb_2.Enabled=true
ELSE
ddlb_2.Enabled=false
END IF
请楼主不妨一试,见笑了!