Foxtable(狐表)用户栏目专家坐堂 → [建议]恳请狐爸核实或解释table对datatable的继承性问题


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

主题:[建议]恳请狐爸核实或解释table对datatable的继承性问题

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7253 积分:40736 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/10/28 14:34:00 [显示全部帖子]

您的代码太过啰嗦,请整理您的思维逻辑:

 

Forms("用户登录").Open()
If _UserName = "" Or _userroles="" Or _usergroup="" Then
    Syscmd.Project.Exit()
    Return
End If
'初始化:所有的表和列都可见和可编辑,可粘贴
For Each t As Table In Tables
    t.Visible = False
    t.AllowEdit = False
    For Each c As Col In t.Cols
        c.Visible = False
        c.AllowEdit = False
    Next
Next
'进行权限管理
Dim drs As List (of DataRow)
Dim roles(),role,values() As String
roles=_userroles.split(",")
For index As Integer = 0 To roles.length-1
    role="'*" & roles(index) & "*'"
    drs  = DataTables("权限管理").Select("角色名称 like " & role,"序号")
    For Each dr As DataRow In drs
        If dr.IsNull("列名")= False Then
            Tables(dr("表名")).Visible =dr("可查阅")
            Tables(dr("表名")).AllowEdit =dr("可编辑")
            Tables(dr("表名")).AllowClipBoard =dr("可粘贴")
        End If
    Next
Next


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7253 积分:40736 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/10/28 14:42:00 [显示全部帖子]

真正要实现逻辑管理,应该这样使用:

 

AfterOpenProject事件代码:

 

For Each t As Table In Tables
    t.Visible = False
    t.AllowEdit = False
    For Each c As Col In t.Cols
        c.Visible = False
        c.AllowEdit = False
    Next
Next
Forms("用户登录").Open()

 

【用户登录】窗口的“登录”按钮代码:

 

If _UserName = "" Or _userroles="" Or _usergroup="" Then
    Syscmd.Project.Exit()
    Return
End If
    '下面这一段加在【登录】按钮密码校验成功后执行的代码后面:
Dim drs As List (of DataRow)
Dim roles(),role,values() As String
roles=_userroles.split(",")
For index As Integer = 0 To roles.length-1
    role="'*" & roles(index) & "*'"
    drs  = DataTables("权限管理").Select("角色名称 like " & role,"序号")
    For Each dr As DataRow In drs
        If dr.IsNull("列名")= False Then
            Tables(dr("表名")).Visible =dr("可查阅")
            Tables(dr("表名")).AllowEdit =dr("可编辑")
            Tables(dr("表名")).AllowClipBoard =dr("可粘贴")
        End If
    Next
Next

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7253 积分:40736 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/10/28 14:58:00 [显示全部帖子]

1、如果Table没有设置过该属性的值,那么从DataTable继承,如果Table已经设置了该属性的值,那么以Table的设置为准。

    比如:您在建立表结构的时候,您并没有设置表、列的标题,而界面显示的是table,他就是从datatable继承过来的。

2、只有不同的Table需要不同的设置时,才需要使用Table的设置属性,否则直接用DataTable的设置属性即可。

    比如:当不同的窗口的不同的table绑定了同一个datatable,他们都继承了datatable的属性,而根据您的需要却要动态设置这两个table的不同属性。

3、实际上DataTable本身是不能编辑的,因为用户根本就看不到DataTable,用户能编辑的只能是Table,所以AllowEdit属性本应该只出现在Table中, DataTable之所以也提供这个属性,只是为了统一设置的方便。

    这一条就不用解释了,您的这一条已经是一条再清楚不过的解释了。


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7253 积分:40736 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/10/29 18:33:00 [显示全部帖子]

您按照您的思路慢慢弄吧,我糊涂了!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7253 积分:40736 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/10/31 1:35:00 [显示全部帖子]

您的权限表的结构都有问题,否则,不会这么麻烦的,我的授权表对权限的管理涉及到每一个表的每一条记录的每一个字段,相当于每个单元格授权了,也没有您说得这么麻烦,罗唆了一大堆,可见您还没有掌握要领,继续加油研究吧!

 回到顶部