以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于让不同用户编辑不同列的疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=76998) |
-- 作者:ehomecd -- 发布时间:2015/11/9 15:07:00 -- [求助]关于让不同用户编辑不同列的疑问 [求助]关于让不同用户编辑不同列,帮助的例子是禁止用户编辑指定的列,但有时候是表的列非常多,只允许用户编辑某两列,应该如何写代码效率高些。 帮助的代码是:
Select
Case
User.Name 实际应用的时候,将上述代码替换为具体的列名和用户名即可 问题:如果让张三,李四只能编辑一二三列;王五、赵六只能编辑四五六列;张经理可以编辑所有列,应该怎么写代码? |
-- 作者:大红袍 -- 发布时间:2015/11/9 15:17:00 -- e.cancel = False Select Case User.Name Case "张三","李四" Select Case e.Col.Name Case "第一列","第二列","第三列" e.Cancel = True End Select Case "王五", "赵六" Select Case e.Col.Name Case "第四列","第五列","第六列" e.Cancel = True End Select Case "张经理" e.cancel = True End Select |
-- 作者:ehomecd -- 发布时间:2015/11/11 15:20:00 -- 根据大红袍老师的提示,修改了代码,在表中编辑实现了不同人编辑不同列;但如果窗口中的文本框绑定了锁定字段,仍然可以编辑;而且将文本框的属性选择只读,仍然可以输入数据,请问解决途径? If e.Table.Name = "游戏个人数据s_龙源宝藏" Then e.cancel = True Select Case _UserRole Case "学生" Select Case e.Col.Name Case "家庭表现","家长留言" e.Cancel = False End Select Case "管理员","员工" e.cancel = False End Select End If
|
-- 作者:大红袍 -- 发布时间:2015/11/11 15:23:00 -- DataColChanging事件。
e.cancel = True Select Case _UserRole
Case "学生"
Select Case e.DataCol.Name
Case "家庭表现","家长留言"
e.Cancel = False
End Select
Case "管理员","员工"
e.cancel = False
End Select
如果要控制窗口控件,你就必须在currentChanged事件写代码控制,类似
|
-- 作者:ehomecd -- 发布时间:2015/11/11 15:45:00 -- 参考http://www.foxtable.com/help/topics/2342.htm 如果角色是《学生》,只允许编辑【家庭表现】【家庭留言】字段,其他字段锁定,这个其他字段怎么简洁的表示? Dim ctl As WinForm.Control = e.Sender Select Case ctl.BindingField Case "游戏个人数据s_龙源宝藏.家庭表现", "游戏个人数据s_龙源宝藏.家长留言" If _UserRole = "学生" Then ctl.ReadOnly = BooleanEnum.False \'允许编辑 Else ctl.ReadOnly = BooleanEnum.True \'禁止编辑 End If End Select [此贴子已经被作者于2015/11/11 15:46:01编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/11/11 15:47:00 -- Dim ctl As WinForm.Control = e.Sender Case Else ctl.ReadOnly = BooleanEnum.True \'禁止编辑 |