回 帖 发 新 帖 刷新版面

主题:求助,请问如何给组合框赋值

怎样给一个组合框赋值,也就是不用选,就有值?

回复列表 (共4个回复)

沙发

组合框.value=值
前提是这个值必须是下拉列表中的一个成员。

板凳

例如根据组合框1选择的单位编号,组合框2单位名称自动赋值,表dwdm有dwbh和dwmc两个字段,combo2的rowsource已经设置为dwdm.dwmc,

LOCATE FOR dwdm.dwbh=ALLTRIM(thisform.combo1.DisplayValue)
b=RECNO()
thisform.combo2.Value=thisform.combo2.list(b)
thisform.Refresh

但是不起作用,请问错在哪?

3 楼

在combo1的interactivechange中加入代码;
LOCAL i,gnunit
LOCAL ARRAY aGrade(1)
*这里假设你的dwbh是字符型的。数字型的你自己改一下。
IF THIS.ListIndex > 2
    gnunit=THIS.DisplayValue
    SELECT DISTINCT dwmc FROM dwdm INTO ARRAY aGrade ;
     WHERE ALLTRIM(dwbh)==ALLTRIM(dwbh) AND  !empty(alltrim(dwmc))                 
ELSE    
    SELECT DISTINCT dwmc  FROM dwdm INTO ARRAY aGrade where !empty(alltrim(dwmc))            
ENDIF

ThisForm.combo2.Clear()
ThisForm.combo2.AddItem("全部")
IF _TALLY>0
    ThisForm.combo2.AddItem("\-")
    FOR i = 1 TO ALEN(aGrade, 1)
        ThisForm.combo2.AddItem(ALLTRIM(aGrade(i)))
    ENDFOR
ENDIF

ThisForm.combo2.ListIndex=1
ThisForm.combo2.interactivechange() &&这行根据需要,如果不需要,就删了。
这样你的combo1的值变了,combo2的数据就自动更新了。
注意,你的combo2的rowsource设置为空。rowsourcetype设置为 0。

4 楼

您的代码需要往combo2里添加选项,我把dwdm表复制到一个临时表里,通过临时表,实现了功能,多谢楼上两位的帮助。
SELECT * FROM dwdm INTO CURSOR tdwdm
LOCATE FOR ALLTRIM(tdwdm.dwbh)=ALLTRIM(thisform.combo1.DisplayValue)
thisform.combo2.Value=thisform.combo2.list(RECNO())
thisform.Refresh

我来回复

您尚未登录,请登录后再回复。点此登录或注册