Foxtable(狐表)用户栏目专家坐堂 → 语法解法


  共有20336人关注过本帖树形打印复制链接

主题:语法解法

帅哥哟,离线,有人找我吗?
有点甜
  161楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/2 16:36:00 [只看该作者]

'用代码批量生成[根目录]
Dim ary1() = {"产品","客户","雇员"}

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode
trv.nodes.Clear
Dim dt As DataTable
Dim cmd As new SQLCommand
For i As Integer = 0 To ary1.length-1
    nd=trv.nodes.Add(Ary1(i))
    Select Case nd.name
        Case "产品"
            cmd.CommandText="select distinct 产品 from {订单}"
            dt=cmd.ExecuteReader
            For Each dr As DataRow In dt.DataRows
                nd.nodes.add(dr("产品"))
            Next
        Case "客户"          
            Dim ary2() = {"外部","内部"}
            For i1 As Integer = 0 To ary2.length-1
                nd.nodes.add(ary2(i1))
            Next
    End Select
Next


 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  162楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/2 23:08:00 [只看该作者]

比如我在窗口中创建了导航栏,在不同导航栏的页面中添加了目录树,我不想在打开窗口后就生成目录树,而是想选择不同的导航页面后,生成不同的目录树?
我在导航栏的SelectedIndexChanged事件中维护代码如下:

Dim bavb As WinForm.NavBar = e.Form.Controls("NavBar1")

Select bavb.SelectedPage.Name

    Case "产品"

        Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")

        Dim nd,nd1 As WinForm.TreeNode

        Dim st1()={"A产品","B产品"}

        For i As Integer = 0 To st1.length-1

            nd=trv.nodes.add(st1(i))

        Next

    Case "客户"

        Dim trv As WinForm.TreeView = e.Form.Controls("TreeView2")

        Dim nd,nd1 As WinForm.TreeNode

        Dim st1()={"A客户","B客户"}

        For i As Integer = 0 To st1.length-1

            nd=trv.nodes.add(st1(i))

        Next

End Select

为什么我想切换一次导航栏的页面就会重复生成我的目录树,请问下怎么实现我切换导航栏页面后不会重复生成目录树


 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  163楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/2 23:17:00 [只看该作者]

谢谢老师,我已解决,主要原因是忘了清除目录树

 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  164楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/3 12:43:00 [只看该作者]

请问下,如何自动实现,选择本节点后,展开本节点下的子节点,自动关闭其他节点

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  165楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106028 积分:539233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/3 13:41:00 [只看该作者]

循环本节点的父节点的所有其他子节点,关闭:http://www.foxtable.com/webhelp/scr/0909.htm

展开本节点下的子节点:http://www.foxtable.com/webhelp/scr/0911.htm

 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  166楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/3 14:24:00 [只看该作者]

没看懂,请问下有案例没

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  167楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106028 积分:539233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/3 14:28:00 [只看该作者]

AfterSelectNode


Dim p As WinForm.TreeNode = e.node.ParentNode

If p.IsNot Nothing Then

    For Each n As WinForm.TreeNode In p.Nodes

        If n <> e.Node Then

            n.CollapseAll

        End If

    Next

End If

e.node.ExpandAll


 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  168楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/3 14:32:00 [只看该作者]

Dim ary1() = {"产品","客户","雇员"}
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd,nd1,nd2 As WinForm.TreeNode
trv.nodes.Clear
Dim dt As DataTable
Dim cmd As new SQLCommand
For i As Integer = 0 To ary1.length-1
    nd=trv.nodes.Add(Ary1(i))
    Select Case nd.name
        Case "产品"
            cmd.CommandText="select distinct 产品 f rom {订单}"
            dt=cmd.ExecuteReader
            For Each dr As DataRow In dt.DataRows
                nd.nodes.add(dr("产品"))
            Next
        Case "客户"
            Dim ary2() = {"外部","内部"}
            Dim id As Integer = trv.Nodes("客户").Index
            For i1 As Integer = 0 To ary2.length-1
                nd1 = nd.Nodes.Insert(ary2(i1),id)
                Select Case nd1.name
                    Case "外部"
                        cmd.commandtext="select distinct 客户 f rom {订单}"
                        dt=cmd.ExecuteReader
                        For Each dr As DataRow In dt.DataRows
                            nd1.Nodes.add(dr("客户"))
                        Next
                    Case "内部"
                        '----在"内部"节点下生成指定子节点
                        Dim ary3()={"分公司","控股公司","全资子公司"}
                        Dim id1 As Integer= nd1.Nodes("内部").Index
                        For i2 As Integer=0 To ary3.length-1
                            nd2 = nd1.Nodes.Insert(ary3(i2),id1)
                        Next
                        '------根据表内容在"内部"子节点下生成节点
                        'cmd.commandtext="select distinct 产品 f rom {订单}"
                        'dt=cmd.ExecuteReader
                        'For Each dr As DataRow In dt.DataRows
                            'nd1.Nodes.add(dr("产品"))
                        'Next
                End Select
            Next
        Case "雇员"
            Dim id As Integer = trv.Nodes("雇员").Index      '指定节点位置
            Dim ary3() ={"正式员工","临时工","派遣人员"}
            For i2 As Integer = 0 To ary3.length-1
                nd1=nd.Nodes.Insert(ary3(i),id)
            Next
    End Select
Next
请问下,上述代码,添加标注颜色部份代码,为什么提示“未将对象引用设置到对象的实例。” 应怎么解决

 回到顶部
帅哥哟,离线,有人找我吗?
wtfwsk05
  169楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:398 积分:2369 威望:0 精华:0 注册:2017/3/19 15:30:00
  发帖心情 Post By:2018/11/3 14:40:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:节点错误.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  170楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106028 积分:539233 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/3 16:36:00 [只看该作者]

回168楼,nd1.Nodes("内部")这句有问题,nd1是新增的节点,还没有任何子节点

Case "内部"
    '----在"内部"节点下生成指定子节点
    Dim ary3()={"分公司","控股公司","全资子公司"}
    For i2 As Integer=0 To ary3.length-1
        nd2 = nd1.Nodes.add(ary3(i2))
    Next

回169楼
If n <> e.Node Then

改为

If n.name <> e.Node.name Then

 回到顶部