以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  录入窗口与权限管理  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=161774)

--  作者:seal51
--  发布时间:2021/3/29 10:07:00
--  录入窗口与权限管理
窗口中有一个表, 需要限制编辑, 列很多,只有个别列需要限制, 如果写简短的代码:
窗口中ENTER事件代码如下:
Dim ctl As WinForm.Control = e.Sender
Select Case ctl.BindingField
    Case"产品列表.产品ID","产品列表.销售产品ID","产品列表.类别","产品列表.品牌","产品列表.产品型号","产品列表.产品图号","产品列表.产品名称","产品列表.缺省供应商","产品列表.产品材料","产品列表.产品规格","产品列表.外径","产品列表.内径","产品列表.高度","产品列表.产品规格1","产品列表.单位","产品列表.单位数量","产品列表.库存","产品列表.备注","产品列表.单重KGS","产品列表.参考代号","产品列表.参考价格","产品列表.初始库存","产品列表.入库数量(入库_数量)","产品列表.入库金额(入库_金额)","产品列表.出库数量(出库_数量)","产品列表.出库金额(出库_金额)","产品列表.库存数量(库存_数量)","产品列表.库存单价(库存_单价)","产品列表.库存金额(库存_金额)","产品列表.产品图片","产品列表.外径1","产品列表.内径1","产品列表.高度1","产品列表.产品尺寸","产品列表.产品BH","产品列表.产品编号","产品列表.辅助编号","产品列表.原始图纸","产品列表.产品IDD","产品列表.临时列","产品列表.世源图号",
        If User.Name = "开发者" Then
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
        If User.Name = "yan" Then
            ctl.ReadOnly = BooleanEnum.False \'允许编辑
        Else
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
End Select
提示错误:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210329100627错误.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/3/29 10:24:00
--  
需要限制的列再放到Case里

去掉最后一个逗号:,"产品列表.世源图号"

--  作者:seal51
--  发布时间:2021/3/29 15:16:00
--  
怎么不起作用?是在窗口中放入了一个表,不是控件,代码也这样写吗?
--  作者:seal51
--  发布时间:2021/3/29 15:25:00
--  
需要限制的列再放到Case里, 这个是什么意思?

--  作者:有点蓝
--  发布时间:2021/3/29 16:04:00
--  
是要限制绑定的控件比如文本框的编辑?还是限制窗口表里单元格的编辑?如果是单元格,到PrepareEdit事件处理:http://www.foxtable.com/webhelp/topics/0605.htm
--  作者:seal51
--  发布时间:2021/3/29 16:13:00
--  
限制窗口表里单元格的编辑:
PrepareEdit事件代码如下:
Select Case User.Name
    Case "wuzhou","js01","seyon01"
        Select Case e.Col.Name
            Case "产品ID","销售产品ID","类别","品牌","产品型号","产品图号","产品名称","缺省供应商","产品材料","产品规格","外径","内径","高度","产品规格1","单位","单位数量","库存","备注","单重KGS","参考代号","参考价格","初始库存","入库数量(入库_数量)","入库金额(入库_金额)","出库数量(出库_数量)","出库金额(出库_金额)","库存数量(库存_数量)","库存单价(库存_单价)","库存金额(库存_金额)","产品图片","外径1","内径1","高度1","产品尺寸","产品BH","产品编号","辅助编号","原始图纸","产品IDD","临时列","世源图号",
                e.Cancel = True
        End Select
End Select
也没起作用

--  作者:有点蓝
--  发布时间:2021/3/29 16:31:00
--  
是这3个人,这些列不能编辑?注意要写列名,不能是标题名。

如果是sqltable到窗口表事件处理。如果是要fill,datasource绑定窗口表的,到全局表事件处理

--  作者:seal51
--  发布时间:2021/3/29 16:32:00
--  
登录系统,如何看出是哪个用户登录的呢?
--  作者:有点蓝
--  发布时间:2021/3/29 16:44:00
--  
User.Name


--  作者:seal51
--  发布时间:2021/3/29 16:57:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20210329165437授权.png
图片点击可在新窗口打开查看


授权A为何没成功? 代码和帮助里的相同!

For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = true
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = \'" & User.Name & "\'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑") 
        End If
    Next
End If

[此贴子已经被作者于2021/3/29 17:03:44编辑过]