以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这段全局表PrepareEdit代码有误么?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73309)

--  作者:everybody
--  发布时间:2015/8/17 0:42:00
--  这段全局表PrepareEdit代码有误么?

要求:当表1,表2,表3中的归档列打勾时,只有管理员才能进行修改。

 

这个代码貌似无效,错在哪里?

 

\'指定表设定,归档后不能编辑,只有管理者组的人才能修改
Select Case e.Table.Name
    Case "表1","表2","表3"
        
        If e.Row("归档") = True AndAlso User.IsRole("管理员")  Then
            e.Cancel = True
        End If
       
       
End Select


--  作者:y2287958
--  发布时间:2015/8/17 6:52:00
--  
试试:
Select Case e.Table.Name
    Case "表1","表2","表3"        
        If e.Row("归档") = True
            e.Cancel = Not User.IsRole("管理员")
        End If           
End Select

--  作者:everybody
--  发布时间:2015/8/17 8:31:00
--  

实测2楼一样无效,奇怪了!!!!!!!!!!

 

继续等高手指教


--  作者:大红袍
--  发布时间:2015/8/17 9:08:00
--  

1、你的全局事件是否开启了?

 

2、加入output.show(User.Roles) 看看是否进入了事件。


--  作者:everybody
--  发布时间:2015/8/17 9:44:00
--  

1、全局事件已开

 

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.PrepareEdit = True
Next

 

2、再测试下


--  作者:everybody
--  发布时间:2015/8/17 10:46:00
--  

实测,加入 output代码后,没有弹出窗口,那咋整啊?这个时候用户信息已经载入了的啊!

 

Select Case e.Table.Name
    Case "表1","表2","表3" 

         If e.Row("归档") = True AndAlso User.IsRole("管理员")  Then
            output.show(User.Roles)
            e.Cancel = True
        End If
End Select

 

 

ps: 全局事件已开

 

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataColChanged = True
    dt.GlobalHandler.PrepareEdit = True
Next

[此贴子已经被作者于2015/8/17 10:47:07编辑过]

--  作者:大红袍
--  发布时间:2015/8/17 10:48:00
--  

打开命令窗口调试 http://www.foxtable.com/help/topics/2642.htm

 


--  作者:everybody
--  发布时间:2015/8/17 11:37:00
--  

重读全局表时间n遍,http://www.foxtable.com/help/index.html?n=2642.htm

 

 

 

Select Case e.Table.Name ------------vs     Select Case e.DataTable.Name 两者是table与datatable的区别,但实际上写成e.DataTable.Name 是通不过的啊!!!!

    Case
"A"
       
\'针对A的代码
    Case
"B"
       
\'针对B的代码
    Case
"C"
       
\'针对C的代码
End Select

或者:

Select Case e.DataTable.Name
    Case
"A"
       
\'针对A的代码
    Case
"B"
       
\'针对B的代码
    Case
"C"
       
\'针对C的代码
End Select


--  作者:everybody
--  发布时间:2015/8/17 11:41:00
--  

比如,我写成如下 ,就会提示错误

 

Select Case e.dataTable.Name  --------------------------》这里改成了datatable
    Case "表1","表2","表3" 

         If e.Row("归档") = True AndAlso User.IsRole("管理员")  Then
            output.show(User.Roles)
            e.Cancel = True
        End If
End Select


--  作者:大红袍
--  发布时间:2015/8/17 12:15:00
--  

看显示什么,不进入,就说明条件不对啊。

 

output.show(date.Now)

Select Case e.Table.Name
    Case "表1","表2","表3"

output.show(date.Now) 

         If e.Row("归档") = True AndAlso User.IsRole("管理员")  Then
            e.Cancel = True
        End If
End Select