以文本方式查看主题 - 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 提示错误:
|
|
-- 作者:有点蓝 -- 发布时间:2021/3/29 10:24:00 -- 需要限制的列再放到Case里 去掉最后一个逗号:,"产品列表.世源图号",
|
|
-- 作者:seal51 -- 发布时间:2021/3/29 15:16:00 -- 怎么不起作用?是在窗口中放入了一个表,不是控件,代码也这样写吗? |
|
-- 作者:seal51 -- 发布时间:2021/3/29 15:25:00 --
|
|
-- 作者:有点蓝 -- 发布时间: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编辑过]
|