以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 两表集合数据同步问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89779)

--  作者:188802386
--  发布时间:2016/8/29 20:43:00
--  [求助] 两表集合数据同步问题
图片点击可在新窗口打开查看请问如何实现点击上面的员工,出现下面界面,或者是哪点有视频或教程也可以
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/8/30 11:40:07编辑过]

--  作者:Hyphen
--  发布时间:2016/8/30 9:11:00
--  
\'角色表click事件
If   e.Row.IsNull("加载范围集合") = False Then
    Dim s1arr() As String = e.Row("加载范围集合").Split(",")
    
    For Each s1 As String In s1arr
        Dim s2arr() As String = s1.Split("|")
        If s2arr.Length = 2 Then
            Dim dr As DataRow = DataTables("表A").Find("权限=\'" & s2arr(0) & "\'")
            If dr IsNot Nothing Then
                dr("授权") = True
                dr("加载范围") = s2arr(1)
            End If
        End If
    Next
End If

--  作者:188802386
--  发布时间:2016/8/30 11:11:00
--  
老师好,现在能实现将角色表的数据加载到授权表中,但发现了一个问题,就是原来加载的不消失,请问如何先清除授权表‘授权’和‘加载范围’列后再加载呢,最后还有个问题就是我在授权表中修改了权限,如何重新保存到相应角色的集合中呢
\'角色表click事件
\'将加载范围集合到授权中
If   e.Row.IsNull("加载范围集合") = False Then
    Dim s1arr() As String = e.Row("加载范围集合").Split(",")
    For Each s1 As String In s1arr
        Dim s2arr() As String = s1.Split("|")
        If s2arr.Length = 2 Then
            Dim dr As DataRow = DataTables("授权").Find("权限 =\'" & s2arr(0) & "\'")
            If dr IsNot Nothing Then
                dr("加载范围") = s2arr(1)
            End If
        End If
    Next
End If
\'将授权集合加载到授权中
If   e.Row.IsNull("授权集合") = False Then
    Dim s3arr() As String = e.Row("授权集合").Split(",")
    For Each s3 As String In s3arr
        Dim dr As DataRow = DataTables("授权").Find("权限 like\'" & s3 & "\'")
        If dr IsNot Nothing Then
            dr("授权") = True
        End If
    Next
End If



--  作者:188802386
--  发布时间:2016/8/30 11:37:00
--  
为了达到保存的效果,我在角色管理增加了授权列 点击授权及弹出角色授权窗口,同样有保存和取消按钮,但是现在问题来了,如何在修改了角色授权表信息后同步更新到角色管理里面,请老师给予帮助。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:角色授权.foxdb



--  作者:Hyphen
--  发布时间:2016/8/30 11:56:00
--  
保存按钮


Dim dr As Row = Tables("角色管理").Current
If dr Is Nothing Then Return

Dim drs As List(Of DataRow) = DataTables("授权").Select("权限 is not null and 加载范围 is not null")
If drs.Count > 0 Then
    Dim sqjh As String
    Dim fwjh As String
    For Each r As DataRow In drs
        sqjh &= "," & r("权限")
        fwjh &= "," & r("权限") & "|" & r("加载范围")
    Next
    dr("授权集合") = sqjh.TrimStart(",")
    dr("加载范围集合") = fwjh.TrimStart(",")
    Tables("角色管理").Current.Save() \'保存当前行
    
End If
e.Form.Close()

--  作者:Hyphen
--  发布时间:2016/8/30 11:59:00
--  
清空列参考:http://www.foxtable.com/webhelp/scr/1532.htm

e.Table.DataTable.ReplaceFor("加载范围",Nothing)

--  作者:188802386
--  发布时间:2016/8/30 13:02:00
--  
请问权限列是逻辑列,如何让drs1 = “权限”为 true 呢
Dim dr As Row = Tables("角色管理").Current
If dr Is Nothing Then Return
Dim drs As List(Of DataRow) = DataTables("授权").Select("权限 is not null and 加载范围 is not null")
If drs.Count > 0 Then
    Dim sqjh As String
    Dim fwjh As String
    For Each r As DataRow In drs
        sqjh &= "," & r("权限")
        fwjh &= "," & r("权限") & "|" & r("加载范围")
    Next
    dr("加载范围集合") = fwjh.TrimStart(",")
    
    Dim drs1 As List(Of DataRow) = DataTables("授权").Select("权限 = ""true""")
    If drs1.Count > 0 Then
        Dim sqjh1 As String
        For Each r As DataRow In drs1
            sqjh1 &= "," & r("权限")
        Next
        dr("授权集合") = sqjh1.TrimStart(",")
        Tables("角色管理").Current.Save() \'保存当前行
    End If
End If
e.Form.Close()
[此贴子已经被作者于2016/8/30 13:56:50编辑过]

--  作者:Hyphen
--  发布时间:2016/8/30 14:40:00
--  
Dim drs1 As List(Of DataRow) = DataTables("授权").Select("权限 = true")