以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树节点焦点问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=26090)

--  作者:zpx_2012
--  发布时间:2012/11/24 13:02:00
--  目录树节点焦点问题

各位老师,

 

当从其他目录树进入到当前目录树中并直接选择或取消选择时为什么焦点是在该子节点的父节点上,

如下图:

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20121124-001.jpg
图片点击可在新窗口打开查看

当我直接勾选仓库节点时,为什么节点的选中状态是在出库单那里,要怎样才能实现直接勾选复选框就选定当前节点?

下图是想要的结果

 

 

谢谢!


图片点击可在新窗口打开查看此主题相关图片如下:360截图20121124-003.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-11-24 14:42:03编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/24 13:32:00
--  
 勾选的时候,编写代码,动态设置选择的节点。

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

--  作者:zpx_2012
--  发布时间:2012/11/24 13:48:00
--  
谢谢小林,可以详细点吗,就是不知道怎么表述“刚刚勾选的这个节点,因为是动态不确定的”。
--  作者:lin_hailun
--  发布时间:2012/11/24 13:53:00
--  
 不是有一个AfterCheckNode事件么?选择以后设定不行么?
--  作者:zpx_2012
--  发布时间:2012/11/24 14:18:00
--  

可能是我表达的不清楚,其实我是想实现下面的功能,

 


图片点击可在新窗口打开查看此主题相关图片如下:360截图20121124-002.jpg
图片点击可在新窗口打开查看

 

当我取消勾选左边目录树的"供应商"时能同步取消右边目录树中的相同表的供应商列

 

反过来如果勾选右边目录树的“录入”时能同步勾选左边目录树的“录入”

 

但奇怪的是有时可以,有时又不可以,原因就是1楼我描述的,如果每次先选中复选框右边的节点文本再勾选复选框就没问题。如果直接去勾选复选框就出现不确定的情况。

 所以关键就是在勾选或取消勾选前能先选中要操作的这个节点就可以了,但不知道你说的那句代码要怎么加,加在哪里?

我在目录树2的AfterCheckNode中已用了下面的代码:

Dim tr1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim tr2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim tr3 As WinForm.TreeView = e.Form.Controls("TreeView3")
Dim tr_Flow As WinForm.TreeView = e.Form.Controls("tr_Flow")
Dim nd1 As WinForm.TreeNode = tr1.SelectedNode
Dim nd2 As WinForm.TreeNode = tr2.SelectedNode
\'Dim nd3 As WinForm.TreeNode = tr3.SelectedNode
Dim dr As DataRow

\'同步子节点选中状态.
For Each nd As WinForm.TreeNode In e.Node.AllNodes
    nd.Checked  = e.Node.Checked
Next
\'去掉父节点选中状态
If e.node.ParentNode IsNot Nothing Then
    e.node.ParentNode.Checked = False
End If

If tr2.Focused AndAlso nd1 IsNot Nothing  Then \'一定要判断焦点是否在此目录树
    \'获取当前目录树所选节点的父节点(表名)
    Dim tbn As String
    Dim nds As WinForm.TreeNode
    If nd2.level = 1 Then
        tbn = nd2.ParentNode.Name
        nds = nd2.ParentNode
    Else
        tbn = nd2.Name
        nds = nd2
    End If
    \'集合当前目录树下的顶级子节点下所有选中的值(排除顶级节点)
    Dim nms As String
    For Each nd As WinForm.TreeNode In nds.AllNodes
        If nd.Checked And nd.level = 1 Then
            nms  = nms & "\\" &  nd.Name
        End If
    Next
    \'查找授权表中部门及角色及表名符合条件的行,如果找到则更新表中相应列的值
    If nd1.Level = 0 Then
        dr = DataTables("授权表").Find("部门 = \'" & nd1.Name & "\' And 角色 Is Null And 表名 = \'" & tbn & "\'")
    Else
        dr = DataTables("授权表").Find("部门 = \'" & nd1.ParentNode.Name & "\' And 角色 = \'" & nd1.Name & "\' And 表名 = \'" & tbn & "\'")
    End If
    If dr IsNot Nothing Then
        If nms > "" Then
            dr("可查看列") = nms.Trim("\\")
            \'当可查看列的列名取消勾选时取消对应的可编辑列的复选框及更新授权表中对应的列值.
            For Each nd As WinForm.TreeNode In tr3.AllNodes
                If nd.Level =1 AndAlso nd2.level = 1 AndAlso nd.parentNode.Name = tbn AndAlso nd2.Name = nd.Name Then
                    If nms.Contains(nd.name) = False Then
                        nd.Checked  = False
                        dr("可编辑列") = dr("可编辑列").Replace(nd.Name,"")
                    End If
                End If
            Next
        Else \'如果没有勾选,清空表中对应列的所有值
            dr("可查看列") = Nothing
            dr("可编辑列") = Nothing
            dr("可操作流程") = Nothing
            \'将其他目录树中对应的节点的复选框清空.
            For Each nd0 As WinForm.TreeNode In tr3.Nodes
                If nd0.Name = tbn Then
                    nd0.Checked  = False
                    For Each nd As WinForm.TreeNode In nd0.Nodes
                        nd.Checked  = False
                    Next
                End If
            Next
         End If
    Else
        \'如果行不存在则新增行

代码略
   
    End If
End If

[此贴子已经被作者于2012-11-24 14:21:08编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/24 14:25:00
--  
无解……不清楚你的表结构,给个例子吧,一串代码看不出什么来的。
--  作者:zpx_2012
--  发布时间:2012/11/24 14:44:00
--  
请再看一下1楼,我加进了一张截图对照,我只是想要那样就行。
--  作者:lin_hailun
--  发布时间:2012/11/24 15:46:00
--  
 我很努力地看代码了……我尽力了,联系客服远程协助吧。
--  作者:zpx_2012
--  发布时间:2012/11/24 15:58:00
--  
好吧,谢谢了!
--  作者:狐狸爸爸
--  发布时间:2012/11/24 16:36:00
--  

是不是这个意思:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目47.table