以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- remove列后用代码不能写入数据问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176427) |
-- 作者:foxyuan -- 发布时间:2022/4/12 22:43:00 -- remove列后用代码不能写入数据问题 帮助里关于remove列有一句: 虽然这些列已经从Table中移除,用户无法编辑和查看其内容,但是仍然可以通过代码或表达式使用或设置这些列的内容。 我在项目AfterOpenProject事件中设置了部分用户组移除三列,全局表事件DataRowAdding中这三列设置如下: Select Case e.DataTable.Name Case "工程部考勤表","项目预算","办公采购" e.DataRow("创建者") = User.Name e.DataRow("创建日期") = Date.Now e.DataRow("最后修改") = User.Name & " " & Date.Now End Select 结果发现,这些用户组增加了行后,后台数据库这三列都不会按代码写入内容。 是我设置有问题,还是达到这目的的三列确实不能移除,只能隐藏?
|
-- 作者:有点蓝 -- 发布时间:2022/4/12 22:52:00 -- 我测试没有问题。有没有开启全局表事件?http://www.foxtable.com/webhelp/topics/0671.htm |
-- 作者:foxyuan -- 发布时间:2022/4/12 23:01:00 -- 开启了的。不过刚试了才知道,不光是移除了这三列的用户组,没有移除这三列的用户组也不写入内容,但用开发者身份登录的就一切正常,增加行或是AfterEdit后,[最后修改]列都会正确写入内容。 |
-- 作者:foxyuan -- 发布时间:2022/4/12 23:08:00 -- 我开启是在项目Initialize里如下代码,没有问题吧,我一直用开发者身份,那里一切都正常。 For Each dt As DataTable In DataTables dt.GlobalHandler.DataRowDeleting = True dt.GlobalHandler.AfterEdit = True dt.GlobalHandler.DataRowAdding = True dt.GlobalHandler.BeforeSelChange = True dt.GlobalHandler.PrepareEdit = True dt.GlobalHandler.BeforeDeleteDataRow = True dt.GlobalHandler.DataRowDeleted = True Next
|
-- 作者:有点蓝 -- 发布时间:2022/4/12 23:22:00 -- 普通用户登录是不是使用的动态加载?在加载后重新设置GlobalHandler |
-- 作者:foxyuan -- 发布时间:2022/4/12 23:35:00 -- 是的,登录是不加载表与数据的,打开这个表才根据权限加载。那在哪里重新设置?每个打开表菜单项里都要加上这个? [此贴子已经被作者于2022/4/12 23:35:33编辑过]
|
-- 作者:foxyuan -- 发布时间:2022/4/13 0:39:00 -- 我在CurrentTableChanged里将BeforeLoadOuterTable里未加载的表统一设置好,可以了,但效率跟取消BeforeLoadOuterTable的加载条件,全部都加载空表,哪个效率更好些? CurrentTableChanged: Select Case CurrentTable.DataTable.Name Case "员工考勤表","项目预算","","" CurrentTable.DataTable.GlobalHandler.PrepareEdit = True CurrentTable.DataTable.GlobalHandler.AfterEdit = True CurrentTable.DataTable.GlobalHandler.DataRowAdding = True CurrentTable.DataTable.GlobalHandler.BeforeDeleteDataRow = True CurrentTable.DataTable.GlobalHandler.DataRowDeleting = True CurrentTable.DataTable.GlobalHandler.DataRowDeleted = True End Select |
-- 作者:有点蓝 -- 发布时间:2022/4/13 8:33:00 -- 设置GlobalHandler和是否加载空表没有什么关系 |