Foxtable(狐表)用户栏目专家坐堂 → [求助]目录树aftereditnode代码报错


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

主题:[求助]目录树aftereditnode代码报错

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/20 8:42:00 [显示全部帖子]

改成

 

msgbox("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")

For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/20 10:06:00 [显示全部帖子]

修改红色代码,如果还报错,弹出每次的条件截图发上来看看。
 
Dim dt As DataTable = DataTables("档案目录管理")
If e.NewText = "" Then
    e.Cancel = True
    Return
End If
MessageBox.Show(e.node.fullpath)
Dim dr As DataRow = dt.find("目录 = '" & e.node.fullpath & "'and 目录层级 = '" & e.node.level & "'") '查找本节点对应行
MessageBox.Show("目录=" & dr("目录"))
If dr IsNot Nothing Then  '如果存在
    Dim ds As DataRow
    Dim de As DataRow
    Dim i As Integer = e.node.level
    If i > 0 Then
        Dim fn As String = dr("文件名")  '将本行文件名列的值赋于FN
        Dim pth1 As String = e.node.fullpath '将全路径的值赋于PTH1
        Dim pth As String
        Dim fl As Integer = fn.Length+1 '计算文件名的长度并加1(\的长度)
        Dim pl As Integer = pth1.Length  '计算全路径的长度
        pth = pth1.SubString(0,pl-fl)  '取全路径中除去文件名及斜杠长度的值(此即为上级目录的值)
        Dim dg As DataRow = dt.find("目录 = '" & pth & "'and 目录层级 = '" & e.node.level-1 & "'") '查找父节点对应行
        If dg IsNot Nothing Then '如父节点对应的行存在
            ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '" & i & "' And 上级级码 = '"& dg("级码") & "'" ) '判断新输入的目录名在同层级和同父目录的行中是否存在
            If ds IsNot Nothing '如果存在,取消输入.
                MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                e.cancel = True
            Else
                
                Dim jm As String = "'" & dg("级码") & "%'"
                Dim lj As String = "'" & e.Node.fullpath & "%'"
                'msgbox("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")
                For Each de In dt.Select("目录层级 >= '" & i & "' And 上级级码 Like " & jm & " And 目录 Like " & lj & "")'历遍目录列中所有需要重命名的行
                    Dim ml2 As String = de("目录").Substring(pl) '在选出的行的目录列中,取将本层目录后的值
                    de("目录") = pth & e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                    de("文件名") = e.NewText '将本行文件名修改为新名称
                Next
                If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                Else
                    ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                    ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
                End If
                e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
            End If
        End If
    Else '如果不存在父目录,即为根目录
        
        ds = dt.Find("文件名 = '" & e.NewText & "'And 目录层级 = '0'" ) '判断新输入的目录名在同层级目录的行中是否存在
        If ds IsNot Nothing '如果存在,取消输入.
            MessageBox.Show("此目录已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e.cancel = True
        Else '如果不存在
            Dim bml As Integer = e.node.fullpath.Length '计算本层目录的长度
            Dim jm As String = "'" & dr("级码") & "%'"
            
            Dim ym As String = "'" & e.Node.Name & "%'"
            For Each de In dt.Select("级码 Like " & jm & " And 目录 Like " & ym & "" ) '历遍根目录列中所有需要重命名的行
                MessageBox.Show("级码=" & jm)
                Dim ml2 As String = de("目录").Substring(bml) '在选出的行的目录列中,取将本层目录后的值
                de("目录") = e.newtext & ml2 '将需要更改行中,目录列需要修改的部分修改为新名称
                de("文件名") = e.NewText '将本行文件名修改为新名称
            Next
            If ftp1.direxists(de("路径") & e.node.name) Then '判断需要重命名的根目录是否存在
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            Else
                ftp1.makedir(de("路径") & e.node.name) '如果不存在,新建目录
                ftp1.Rename(de("路径") & e.node.name,de("路径") & e.NewText) '如果存在,修改目录名称
            End If
            e.Node.Name = e.NewText '使得节点的名称和标题保持一致.
        End If
    End If
End If

 回到顶部