以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  代码有误  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68664)

--  作者:blsu33
--  发布时间:2015/5/22 10:25:00
--  代码有误
老师,
  下列代码写的有问题,麻烦老师给看下,那里有误
Dim Values() As String
Dim Values2() As String
For Each dr As DataRow In DataTables("角色").DataRows
    Values=dr("角色").split("\\")
    For Index As Integer = 0 To Values.Length - 1
        If Values2.Contains(Values)=False Then
            Values2.Insert(0,Values)
        Else
            Values2.Replace(Values,"")
        End If
    Next
Next

--  作者:Bin
--  发布时间:2015/5/22 10:26:00
--  
出现什么问题? 你想实现什么效果?
--  作者:Bin
--  发布时间:2015/5/22 10:30:00
--  
根据你的代码 Values2是个数组 
数租是没有Insert Replace 等这些函数的




--  作者:blsu33
--  发布时间:2015/5/22 10:54:00
--  
老师,
角色重命名,希望替换权限里面的原来角色名称,怎么实现

希望在目录树的AfterEditNode  或是保存按钮中完成 替换


例如 角色财务经理 更改为财务 

希望角色里面角色 更改为财务的同时,权限里面的同样更改


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角色重命名权限角色列的替换.foxdb



--  作者:Bin
--  发布时间:2015/5/22 10:56:00
--  
看3楼解释,是否能解决你问题
--  作者:大红袍
--  发布时间:2015/5/22 11:02:00
--  
For Each dr As DataRow In DataTables("角色").DataRows
    Dim str As String = ""
    For Each s As String In dr("角色").split("\\")
        If s = e.Node.Text Then
            str &= e.NewText & "\\"
        Else
            str &= s & "\\"
        End If
    Next
    dr("角色") = str.trim("\\")
Next

--  作者:blsu33
--  发布时间:2015/5/22 11:33:00
--  
老师,
AfterEditNode 代码如下,但是不起作用,求老师给看看

Dim dt As DataTable = DataTables("角色")
Dim dr As DataRow
Dim dr2 As DataRow
If e.NewText = "" Then
    e.Cancel = True
Else
    dr = dt.Find("角色 = \'" & e.NewText & "\'") \'判断新输入的分组是否存在
    If dr IsNot Nothing \'如果存在,取消输入.
        MessageBox.Show("此角色已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        e.cancel = True
    ElseIf e.Node.Nodes.Count>0 Then
        MessageBox.Show("存在下级,请删除下级后再修改!")
        e.Cancel = True
    Else
        For Each dr In dt.Select("角色 like  \'\\" & e.NewText & "%\' Or 角色 Like \'%" & e.NewText & "\\\' or  角色 Like \'%\\" & e.NewText & "\\%\' or 角色 =\'" & e.NewText & "\'" )\'重命名分组
            dr("角色") =dr("角色") .Replace(e.NewText,"")
        Next
        e.Node.Name = e.NewText \'使得节点的名称和标题保持一致.
    End If
End If

Dim Values() As String
Dim Values2 As New List(Of String)
For Each dr3 As DataRow In DataTables("角色").DataRows
    Values=dr3("角色").split("\\")
    For Index As Integer = 0 To Values.Length - 1
        If Values2.Contains(Values(Index))=False Then
            Values2.Insert(0,Values(Index))
        Else
            Values2.Remove(Values(Index))
        End If
    Next
Next
For Each Values3 As String In Values2
    Dim drs As List(Of DataRow) = DataTables("权限").Select("角色 like  \'\\" & Values3 & "%\' Or 角色 Like \'%" & Values3 & "\\\' or  角色 Like \'%\\" & Values3 & "\\%\' or 角色 =\'" & Values3 & "\'" )\'重命名分组
    For n As Integer = 0 To drs.Count - 1
        If drs(n)("角色").Contains("Values3")
            drs(n)("角色") = drs(n)("角色").Replace(Values3,"")
        End If
    Next
Next

--  作者:大红袍
--  发布时间:2015/5/22 11:40:00
--  
 不明你想做什么啊?看6楼代码。
--  作者:blsu33
--  发布时间:2015/5/22 11:42:00
--  
大红袍,
   6楼代码对角色的表有效果,但是对权限表,没有,能帮我再看看嘛。图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2015/5/22 11:53:00
--  

代码拷贝一份就行

 

For Each dr As DataRow In DataTables("角色").DataRows
    Dim str As String = ""
    For Each s As String In dr("角色").split("\\")
        If s = e.Node.Text Then
            str &= e.NewText & "\\"
        Else
            str &= s & "\\"
        End If
    Next
    dr("角色") = str.trim("\\")
Next

For Each dr As DataRow In DataTables("权限").DataRows
    Dim str As String = ""
    For Each s As String In dr("角色").split("\\")
        If s = e.Node.Text Then
            str &= e.NewText & "\\"
        Else
            str &= s & "\\"
        End If
    Next
    dr("角色") = str.trim("\\")
Next