Foxtable(狐表)用户栏目专家坐堂 → 增加子节点父键要保持和已有分组不变


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

主题:增加子节点父键要保持和已有分组不变

帅哥哟,离线,有人找我吗?
cd_tdh
  11楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3082 积分:20596 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/8/8 10:03:00 [只看该作者]

老师,新增加的节点还是定位不到新增加的行

AfterSelectNode代码如下:

With Tables(vars("editTable")) 
    Dim r As Integer
    If e.node.Level = 1 Then
        r = .Findrow("分组 = '" & e.Node.ParentNode.Name &  "' And 名称 = '" & e.Node.Name & "'")
    ElseIf e.node.Level = 0 Then
        r = .Findrow("分组 = '" & e.Node.Name &  "' And 名称 Is Null")
    End If
    If r >= 0 Then '如果找到的话
        .Position = r '定位到找到的行.
    End If
End With

[此贴子已经被作者于2018/8/8 10:03:33编辑过]

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


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

改成
 
    Dim r As DataRow=dt.AddNew
    If sd.Level=0 Then
        name="分组"
        typ="新节点"
        r("父键")=dt.Compute("Max(父键)","分组 ='" & sd.name & "'")
        r("分组")=sd.name
        r("名称")=typ
    End If
    dim mynd = sd.Nodes.add(r("名称"),mp)
    sd.Expand
    tr.SelectedNode = mynd
    tr.Select

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


加好友 发短信
等级:狐精 帖子:3082 积分:20596 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/8/8 11:05:00 [只看该作者]

老师,还有个问题,有通过右边记录窗口更改分组名或是新的节点名称,目录树怎么同时更新呢?

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


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

以下是引用cd_tdh在2018/8/8 11:05:00的发言:
老师,还有个问题,有通过右边记录窗口更改分组名或是新的节点名称,目录树怎么同时更新呢?

 

方法一:重新buildtree。

 

方法二:一般不是选的节点后,右边才显示?修改右边(datacolchanged)事件,把选定的节点的text修改一下即可。


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


加好友 发短信
等级:狐精 帖子:3082 积分:20596 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2018/8/8 11:44:00 [只看该作者]

我增加了一个辅助列,DataColChanged代码如下,没有同步修改,哪儿逻辑不对呢?

 

If e.DataCol.Name = "序号" Then
    e.DataRow("辅助ID")="Add_" & e.DataRow("序号")
End If

'窗口控件同步修改
If e.DataCol.Name="名称" Or e.DataCol.Name="分组" Then
    Dim fn As winform.form=vars("editForm")
    If fn.Opened Then
        Dim tr As WinForm.TreeView = fn.Controls("TreeView1")
        For Each sd As  WinForm.TreeNode In tr.AllNodes
            If sd.Name=e.DataRow("辅助ID") Then
                sd.Name=e.NewValue
            End If
        Next
    End If
End If

 

 


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


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

哎,你好好弹出值看一下吧

 

For Each sd As  WinForm.TreeNode In tr.AllNodes

    msgbox(sd.name & "   " & sd.fullName)

Next


 回到顶部
总数 16 上一页 1 2