Foxtable(狐表)用户栏目专家坐堂 → 这段全局表PrepareEdit代码有误么?


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

主题:这段全局表PrepareEdit代码有误么?

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
这段全局表PrepareEdit代码有误么?  发帖心情 Post By:2015/8/17 0:42:00 [只看该作者]

要求:当表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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2015/8/17 8:31:00 [只看该作者]

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

 

继续等高手指教


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/17 9:08:00 [只看该作者]

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

 

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


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/17 10:48:00 [只看该作者]

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

 


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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


 回到顶部