Foxtable(狐表)用户栏目专家坐堂 → 求助:窗口中,判断:复选框,后生成:组合框的下拉列表。


  共有2620人关注过本帖树形打印复制链接

主题:求助:窗口中,判断:复选框,后生成:组合框的下拉列表。

帅哥哟,离线,有人找我吗?
yancheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
求助:窗口中,判断:复选框,后生成:组合框的下拉列表。  发帖心情 Post By:2015/8/24 16:25:00 [只看该作者]



求助:窗口中,判断:复选框,后生成:组合框的下拉列表。

Dim skzt As WinForm.ComboBox = e.Form.Controls("收款状态")
Dim yjdk As WinForm.CheckBox = e.Form.Controls("有进度款")
Dim yyzbj As WinForm.CheckBox = e.Form.Controls("有压质保金")
Dim yyfk As WinForm.CheckBox = e.Form.Controls("有预付款")
If yjdk.Checked = True Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态'","编号")
End If

上面代码写在:窗口生成事件中,
如果把IF判断删除了,能正常的,生成下拉。
如果保留IF判断,下拉不生成。
是checked用得不对吗?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/24 16:31:00 [只看该作者]

呃,生成窗口的时候Checked明显是false。

 

你可以写到yjdk控件的click事件


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/24 16:34:00 [只看该作者]

你这个复选框到底有没有选中,这样用没问题

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/8/24 16:35:00 [只看该作者]

哦明白了。哪,我可不可以写到:Dim skzt As WinForm.ComboBox = e.Form.Controls("收款状态")
的click控件中?来判断,复选框,是不是选中?


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/24 16:40:00 [只看该作者]

就是那意思

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/8/24 17:31:00 [只看该作者]

我要通过判断,上面三个:选中,状态,来显示:收款状态的,下拉。思路应该怎么样?在哪里写代码?我又晕了。
图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/24 17:38:00 [只看该作者]

下拉的enter事件

 

Dim skzt As WinForm.ComboBox = e.Form.Controls("收款状态")
Dim yjdk As WinForm.CheckBox = e.Form.Controls("有进度款")
Dim yyzbj As WinForm.CheckBox = e.Form.Controls("有压质保金")
Dim yyfk As WinForm.CheckBox = e.Form.Controls("有预付款")
If yjdk.Checked = True Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态'","编号")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2015/8/24 18:02:00 [只看该作者]

我在ENTER输入了,下面的代码,可以用了。但是我感觉是不是写得挺笨的,是不是都应该这样写呢?有没有更好的写法?
Dim yyfk As WinForm.CheckBox = e.Form.Controls("有预付款")
Dim yjdk As WinForm.CheckBox = e.Form.Controls("有进度款")
Dim yyzbj As WinForm.CheckBox = e.Form.Controls("有压质保金")
Dim skzt As WinForm.ComboBox = e.Form.Controls("收款状态")
If yyfk.Checked And yjdk.Checked And yyzbj.Checked Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态'","编号")
ElseIf yyfk.Checked = False And yjdk.Checked = False And yyzbj.Checked = False Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态' and 取值列 <> '有预付款' and 取值列 <> '有进度款' and 取值列 <> '有压质保金'","编号")
ElseIf yyfk.Checked = False And yjdk.Checked  And yyzbj.Checked  Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态' and 取值列 <> '有预付款' ","编号")
ElseIf yyfk.Checked  And yjdk.Checked = False And yyzbj.Checked = False Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态'  and 取值列 <> '有进度款' and 取值列 <> '有压质保金'","编号")
ElseIf yyfk.Checked  And yjdk.Checked  And yyzbj.Checked = False Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态' and  取值列 <> '有压质保金'","编号")
ElseIf yyfk.Checked = False And yjdk.Checked  And yyzbj.Checked = False Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态' and 取值列 <> '有预付款' and  取值列 <> '有压质保金'","编号")
ElseIf yyfk.Checked = False And yjdk.Checked = False And yyzbj.Checked  Then
    skzt.ComboList = DataTables("字典").GetComboListString("取值列2","名称 = '合同收款状态' and 取值列 <> '有预付款' and 取值列 <> '有进度款'","编号")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/24 18:09:00 [只看该作者]

 

[此贴子已经被作者于2015/8/24 18:09:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/24 18:10:00 [只看该作者]

Dim yyfk As WinForm.CheckBox = e.Form.Controls("有预付款")
Dim yjdk As WinForm.CheckBox = e.Form.Controls("有进度款")
Dim yyzbj As WinForm.CheckBox = e.Form.Controls("有压质保金")
Dim skzt As WinForm.ComboBox = e.Form.Controls("收款状态")
 
Dim Filter As String = "名称 = '合同收款状态'"
 

If yyfk.Checked  Then

    Filter &= " And 取值列 = '有预付款' "

End If

 

If yjdk.Checked  Then

    Filter &= " And 取值列 = '有进度款' "

End If

 

If yyzbj.Checked  Then

    Filter &= " And 取值列 = '有压质保金' "

End If

 

skzt.ComboList = DataTables("字典").GetComboListString("取值列2", filter,"编号")


 回到顶部