以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何动态实现下拉列表的值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23847)

--  作者:与伊相伴
--  发布时间:2012/9/21 15:51:00
--  如何动态实现下拉列表的值
请教:假如一个表中有两列,如果第一列操作获得值过后,第二列做一个下拉列表,它的值是根据每一次第一列的值来筛选另外一个表中是否存在相应的值,如果没有值,就保持空值的下拉列表,不能录入下拉不存在的值,怎么实现了呢?
我在进入单元格,准备编辑事件中添加如下代码:

Dim tb As Table = Tables("订单_生产工资_table1")
Select Case e.Col.Name
    Case "工作名称"
        tb.Cols("工作名称").AllowDirectType = False \'不允许直接输入
        tb.Cols("工作名称").ComboList = ""
        tb.Cols("工作名称").ComboList = DataTables("sc_cpys_cx").GetComboListString("说明","订单编号=\'" & Trim(e.Row("订单编号")) & "\' and 序号 = " & Trim(e.Row("序号")) & " And 编号 > \'1007\'")
        If tb.Cols("工作名称").ComboList = "" Then
            tb.Cols("工作名称").ComboList = ""
        End If
End Select

 

如果存在值的时候下拉列表会有相应的值,如果不存在值的时候,单元格还是能够往里面输入其他值,想通过动态实现控制不能输入前部分未输入的值


--  作者:lin_hailun
--  发布时间:2012/9/21 16:31:00
--  
 在ValidateEdit事件中写如下验证代码。

 if e.Col.ComboList.Contains(e.Row(e.Col.Name)) = false then
     
 \'不存在下拉列表中

 end if
[此贴子已经被作者于2012-9-21 16:31:06编辑过]