以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  下拉窗口问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174012)

--  作者:happyft
--  发布时间:2021/12/27 11:41:00
--  下拉窗口问题

图片点击可在新窗口打开查看此主题相关图片如下:下拉窗口.jpg
图片点击可在新窗口打开查看


弹出下拉窗口时,想根据每行不同的窗口表名显示不同的授权部门角色目录树,但发现下拉窗口第一次生成后,再换不同的行时都是一样的,
下拉窗口afterLoad代码如下:
Dim pr As Row = Tables("查阅范围设置_Table1").Current
If pr IsNot Nothing AndAlso pr.Isnull("winN") = False Then
    Dim tr4 As WinForm.TreeView = e.Form.Controls("TreeView1")  \'所有部门角色
    Dim dr,dr2 As DataRow
    dr = DataTables("MoGroup").Find("WinName = \'" & pr("winN") & "\'")
    If dr IsNot Nothing Then
        Dim nms As String = dr("sqRole")
        \'1---将有权查看表单的部门角色生成目录树
        If nms > "" Then
           tr4.Nodes.Clear()  \'先清除
            Dim nds() As String = nms.Split(",")  \'拆分每一组部门.角色为数组
            For i As Integer = 0 To nds.Length - 1
                Dim cnd() As String = nds(i).Split(".")  \'拆分部门与角色
                If cnd(0) = "All" AndAlso cnd(1) = "All" Then   \'All.All,增加All节点及其下从用户表中获取的所有角色节点
                    If tr4.Nodes.Contains(cnd(0)) = False Then
                        tr4.Nodes.Add(cnd(0))
                        For Each cdr As DataRow In dt.DataRows
                            If tr4.Nodes(cnd(0)).Nodes.Contains(cdr("RoleID")) = False Then
                                tr4.Nodes(cnd(0)).Nodes.Add(cdr("RoleID"),cdr("角色")) \'添加所有角色及中文名称(后续All.All节点不再处理中文显示)
                            End If
                        Next
                    End If
              end if
            Next
         End If
    End If
End If
是什么原因?谢谢!

--  作者:有点蓝
--  发布时间:2021/12/27 11:53:00
--  
代码放到DropDownOpening事件