以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]下拉列表过滤  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108629)

--  作者:积水成渊
--  发布时间:2017/10/26 10:53:00
--  [求助]下拉列表过滤
A表有两个字段:(列名,值),列下我已经做成了下拉(单据类型|商品编码|开始时间|结束时间),现在我需要判断列名下拉的内容,给值字段也做成下拉
比如当列名的内容为单据类型时,值字段的下拉内容为:入库单|退货单,当列名的内容为商品编码失望,值字段的下拉内容为:001|002
我在datacolchanged事件中的代码如下;
Dim t4 As Table = e.Form.Controls("Table4").Table

If e.DataCol.name = "列名" Then
    If e.DataRow("列名") = "单据类型" Then
       \' If e.IsFocusCell Then \'如果是焦点单元格
           \' If e.Col.Name = "值" Then \'如果正在编辑的是值列
                t4.Cols("值").Combolist ="入库单|退货单|入库退货单"
            End If
        \'End If
   \' End If
End If

现在的问题是,我要实现的是选中行列名为单据类型时,当前行值的下拉内容为:入库单|退货单|入库退货单;而不是整个列都变成了下拉内容为:入库单|退货单|入库退货单

--  作者:有点甜
--  发布时间:2017/10/26 11:05:00
--  

prepareEdit事件

 

If e.Col.Name = "值" Then \'如果正在编辑的是值列
    If e.Row("列名") = "单据类型" Then
        e.Col.Combolist ="入库单|退货单|入库退货单"
    ElseIf e.Row("列名") = "商品编码" Then
        e.Col.Combolist ="001|002"
    End If
End If
 
 
 
 
 

--  作者:积水成渊
--  发布时间:2017/10/26 11:08:00
--  
谢谢
--  作者:积水成渊
--  发布时间:2017/10/26 11:39:00
--  
还有个问题,就是当列名选择开始时间时,值列要变成时间内置器,这个怎么处理,我加了个代码,没有起到作用:e.Col.UsetBuildInEditor = True
--  作者:有点甜
--  发布时间:2017/10/26 11:50:00
--  

If e.Col.Name = "值" Then \'如果正在编辑的是值列
    If e.Row("列名") = "单据类型" Then
        e.Col.Combolist ="入库单|退货单|入库退货单"
    ElseIf e.Row("列名") = "商品编码" Then
        e.Col.Combolist ="001|002"

    ElseIf e.Row("列名") = "时间" Then
        e.Table.grid.cols(e.Col.name).Editor = new windows.forms.DateTimePicker
    End If
End If