以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]根据列的内容决定是否调用目录树  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79006)

--  作者:cqlwsam
--  发布时间:2015/12/22 18:00:00
--  [求助]根据列的内容决定是否调用目录树
如截图,如果列“治疗方式”选择药物治疗,列“药物或治疗种类”及“药物或治疗名称”就是用目录树文件赋值进行选择如果选择治疗方式则直接手工填写,没有选择项。如果搞定。


图片点击可在新窗口打开查看此主题相关图片如下:360反馈意见截图16230319405092.png
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:360反馈意见截图162303238698101.png
图片点击可在新窗口打开查看


--  作者:大红袍
--  发布时间:2015/12/22 18:03:00
--  

prepareEdit判断列值,然后设置

 

http://www.foxtable.com/help/topics/2031.htm

 


--  作者:cqlwsam
--  发布时间:2015/12/23 7:47:00
--  
代码如下:
If e.Col.name="药物或治疗种类" Then
    If e.Row("治疗方式")="药物治疗" Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("非手术治疗信息库") \'指定目录树表
        tb.TreeCols = "药物或治疗种类|药物或治疗名称" \'指定用于生成目录树的列
        tb.ReceiveCols = "药物或治疗种类|药物或治疗名称" \'指定数据接收列
        Tables("患者非手术治疗史").Cols("药物或治疗种类").DropTree = tb.Build()
    End If
End If

但是只要有一次出现了“药物治疗”后面即使再选“其他治疗”均会出现下拉表。是不是需要在上述代码中加入else,但我不知道如何取消目录树。

--  作者:cqlwsam
--  发布时间:2015/12/23 9:02:00
--  
另外,是否可以使用opendropdown和closedropdown
--  作者:大红袍
--  发布时间:2015/12/23 9:50:00
--  

比如

 

If e.Col.name="第二列" Then
    If e.Row("第一列")="123" Then
        Dim tb As New DropTreeBuilder
        tb.SourceTable = DataTables("表A") \'指定目录树表
        tb.TreeCols = "第一列|第二列" \'指定用于生成目录树的列
        tb.ReceiveCols = "第二列|第三列" \'指定数据接收列
        e.Col.DropTree = tb.Build()
    Else
        e.Col.DropTree = Nothing

    End If
End If


--  作者:cqlwsam
--  发布时间:2015/12/23 9:54:00
--  
对了。谢谢!图片点击可在新窗口打开查看

[此贴子已经被作者于2015/12/23 9:57:56编辑过]