以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新手学习 关于下拉框的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30418)

--  作者:sdykjrc
--  发布时间:2013/3/27 15:26:00
--  新手学习 关于下拉框的问题
想实现 这样一个功能。
下拉框 有2项供选择 金属材料 设备
当选择金属材料的时候希望生成一个新的 下拉框
当选择设备的时候希望重新生成一个新的下拉框

下面是在StartEdit事件添入的代码。

Dim r As Row = Tables("材料出库明细表").Current
If e.Col.Name = "物资名称" And r("物资名称")="金属材料" Then 
     e.Col.Combolist = DataTables("金属基本资料").GetComboListString("金属基本资料", "[材料名称] =\'" & e.Row("物资名称") & "\'") 
End If
If e.Col.Name = "物资名称" And r("物资名称")="设备" Then 
     e.Col.Combolist = DataTables("设备基本资料").GetComboListString("设备基本资料", "[设备名称] =\'" & e.Row("物资名称") & "\'") 
End If

--  作者:狐狸爸爸
--  发布时间:2013/3/27 15:56:00
--  
事件用错了,应该用PrepareEdit事件,而不是StartEdit事件
--  作者:sdykjrc
--  发布时间:2013/3/27 16:34:00
--  
狐爸  你看我的想法对不对
1》AfterOpenProject事件加入了下面代码
Tables("材料出库明细表").Cols("物资名称").Combolist = DataTables("金属基本资料").GetComboListString("材料名称")
Tables("材料出库明细表").Cols("物资名称").Combolist = DataTables("设备基本资料").GetComboListString("设备名称")
2》出库材料单里面设置  设置了列属性
金属材料|设备
3》StartEdit事件添入的代码

--  作者:狐狸爸爸
--  发布时间:2013/3/27 16:43:00
--  

哈,二楼不是说了吗,用PrepareEdit事件。

 

另外事件代码,尽量用e参数,例如e.Table

 

代码改为这样清晰点:

 

 

Dim r As Row = e.Row
If e.Col.Name = "物资名称"
    Select Case r("物资名称")
        Case "金属材料"
            e.Col.Combolist = DataTables("金属基本资料").GetComboListString("金属基本资料", "[材料名称] =\'" & r("物资名称") & "\'")
        Case "设备"
            e.Col.Combolist = DataTables("设备基本资料").GetComboListString("设备基本资料", "[设备名称] =\'" & r("物资名称") & "\'")
    End Select
End If


--  作者:sdykjrc
--  发布时间:2013/3/28 10:56:00
--  
狐爸 还是遇到一个问题 当我选择 设备后  下拉框 不会立即更新。必须重新点击 下拉框 才更新。
--  作者:狐狸爸爸
--  发布时间:2013/3/28 11:05:00
--  
做个简单例子发上来,然后说明问题。
--  作者:sdykjrc
--  发布时间:2013/3/28 14:38:00
--  
出库明细表 录入数据 物资名称列 下拉框部能及时更新
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:材料管理.zip