有点甜大神你好:
谢谢你给出修改意见,但按照你给的修改方法,运行时还是报错:<语法错误:“1”运算符后缺少操作数。>
此主题相关图片如下:档案目录管理.png
上图是与目录树相关联的表窗口中的目录树可以增加根目录、增加子目录正常。
以下是aftereditnode的全部代码,还请大神看看是不是其他地还有问题?谢谢!
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