以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]目录树第二个节点问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=125490) |
-- 作者:紫色幽魂 -- 发布时间:2018/9/29 13:26:00 -- [求助]目录树第二个节点问题 我要生成一个授权表,用目录树的形式授权,第二个节点代码出现问题,会报错,请问这个应该怎么改,msgbox(dr2("父节点") & ":" & dr2("子节点"))测试的时候全部都能正常显示,但是加上标色那段代码就会出错 Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") Dim mc As String = "& e.Node.Name &" Dim drs As List(Of DataRow) = DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\'") \'选择不同行时清除选择状态 For Each nd As WinForm.TreeNode In trv2.AllNodes nd.Checked = False Next For Each dr1 As DataRow In DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\' and 子节点 is null") trv2.Nodes(dr1("父节点")).Checked = dr1.IsNull("父节点") = False AndAlso dr1.IsNull("子节点") = True Next For Each dr2 As DataRow In DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\' and 子节点 is not null") trv2.Nodes(dr2("父节点")).Nodes(dr2("子节点")).Checked = dr2.IsNull("子节点") = False Next
|
-- 作者:有点蓝 -- 发布时间:2018/9/29 14:55:00 -- 具体提示什么错误?目录树是怎么样生成的? |
-- 作者:紫色幽魂 -- 发布时间:2018/9/29 15:48:00 -- 回复:(有点蓝)具体提示什么错误?目录树是怎么样生... 目录树更具表和导航页面内容生成 提示的错误信息是: 错误所在事件:窗口,用户授权,TreeView1,AfterSelectNode 详细错误信息: 未将对象引用设置到对象的实例。 生成目录树代码: Dim yh As WinForm.TreeView = e.Form.Controls("TreeView1") Dim ck As WinForm.TreeView = e.Form.Controls("TreeView2") Dim dhc As WinForm.TopicBar = Forms("导航栏").Controls("TopicBar1") \'导航页面目录树 For Each page As WinForm.TopicPage In dhc.Pages If ck.Nodes.Contains(page.Name) = False Then ck.Nodes.Add(page.Name) End If For Each link As WinForm.TopicLink In page.Links ck.Nodes(page.Name).Nodes.Add(link.Text.trim("←")) Next Next yh.BuildTree("用户_用户表","用户名") ck.ExpandAll ck.Nodes(0).Collapse 左边目录树AfterSelectNode代码: Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") Dim mc As String = "& e.Node.Name &" Dim drs As List(Of DataRow) = DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\'") \'选择不同行时清除选择状态 For Each nd As WinForm.TreeNode In trv2.AllNodes nd.Checked = False Next For Each dr1 As DataRow In DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\' and 子节点 is null") trv2.Nodes(dr1("父节点")).Checked = dr1.IsNull("父节点") = False AndAlso dr1.IsNull("子节点") = True Next For Each dr2 As DataRow In DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\' and 子节点 is not null") trv2.Nodes(dr2("父节点")).Nodes(dr2("子节点")).Checked = dr2.IsNull("父节点") = False AndAlso dr2.IsNull("子节点") = False Next 右边目录树AfterCheckNode代码: Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1") Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2") Dim nd1 As WinForm.TreeNode = trv1.SelectedNode Dim nd2 As WinForm.TreeNode = trv2.SelectedNode Dim dr As DataRow Dim sl As Integer If nd2.Level = 0 Then dr = DataTables("用户_授权").Find("父节点 = \'"& e.Node.Name &"\'") ElseIf nd2.Level = 1 Then dr = DataTables("用户_授权").Find("父节点 = \'"& e.Node.ParentNode.Name &"\' and 子节点 = \'"& e.Node.Name &"\'") End If If e.Node.IsSelected = True If dr("用户").contains(nd1.Text) = False If dr.IsNull("用户") dr("用户") = nd1.Text Else dr("用户") = dr("用户") & "," & nd1.Text End If ElseIf e.Node.Checked = False Dim ss() As String = dr("用户").split(",") Dim lst As new List(of String) lst.AddRange(ss) lst.remove(nd1.Text) dr("用户") = String.Join(",",lst.ToArray()) End If End If |
-- 作者:有点蓝 -- 发布时间:2018/9/29 15:55:00 -- 目录树节点是从导航栏生成的,后面是通过表格取节点值,导航栏和DataTables("用户_授权")肯定有不一致的名称,所以找不到节点 For Each dr2 As DataRow In DataTables("用户_授权").Select("用户 like \'*"& e.Node.Name &"*\' and 子节点 is not null") trv2.Nodes(dr2("父节点")).Nodes(dr2("子节点")).Checked = dr2.IsNull("父节点") = False AndAlso dr2.IsNull("子节点") = False Next |
-- 作者:紫色幽魂 -- 发布时间:2018/9/29 16:00:00 -- 回复:(有点蓝)目录树节点是从导航栏生成的,后面是... 我在项目的AfterOpenProject事件中写入代码,将导航栏的名称节点写入这个表里面,所以数据都是一样的 \'导航栏节点数据导入授权表 Dim dhc As WinForm.TopicBar = Forms("导航栏").Controls("TopicBar1") \'导航页面目录树 For Each page As WinForm.TopicPage In dhc.Pages Dim dr As DataRow = DataTables("用户_授权").Find("父节点 = \'"& page.Name &"\'") If dr Is Nothing Then dr = DataTables("用户_授权").AddNew dr("父节点") = page.Name End If For Each link As WinForm.TopicLink In page.Links Dim dr1 As DataRow = DataTables("用户_授权").Find("父节点 = \'"& page.Name &"\' And 子节点 = \'"& link.Text &"\'") If dr1 Is Nothing Then dr1 = DataTables("用户_授权").AddNew dr1("父节点") = page.Name dr1("子节点") = link.Text End If Next Next
|
-- 作者:有点蓝 -- 发布时间:2018/9/29 16:19:00 -- 肯定有不一样的数据 For Each dr2 As DataRow In DataTables("用户_授权").Select("用户 like \'%" & e.Node.Name & "%\' and 子节点 is not null") Dim n = trv2.Nodes(dr2("父节点")) If n.text > "" Then Dim n2 = n.Nodes(dr2("子节点")) If n2.text > "" Then n2.Checked = dr2.IsNull("父节点") = False AndAlso dr2.IsNull("子节点") = False Else msgboc("不存在" & dr2("子节点")) End If Else msgboc("不存在" & dr2("父节点")) End If Next |