以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]帮助文件中的实例“独占式编辑之一”,有一个不完善的地方: (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146405) |
-- 作者:fengwenliuyan -- 发布时间:2020/2/23 10:55:00 -- [求助]帮助文件中的实例“独占式编辑之一”,有一个不完善的地方: 帮助文件中的实例“独占式编辑之一”,有一个不完善的地方: 若用户A,在已新增的空行第一行中的第一列编辑"111",保存, 然后用户B,未刷新数据,直接在这一行的第一列编辑"222",那么这一行的用户A刚编辑的数据,将被无视并覆盖掉了, 请问,有什么办法解决吗?
|
-- 作者:fengwenliuyan -- 发布时间:2020/2/23 15:02:00 -- 回复:(fengwenliuyan)[求助]帮助文件中的实例“独占... ?求帮助? 怎么一直没有人帮助呢? |
-- 作者:fengwenliuyan -- 发布时间:2020/2/23 20:38:00 -- 回复:(fengwenliuyan)回复:(fengwenliuyan)[求助... 求帮助 |
-- 作者:有点蓝 -- 发布时间:2020/2/23 20:54:00 -- 用户B如果没有刷新数据,怎么看得到其它用户新增的数据?又如何编辑呢?所以不可能出现冲突啊 |
-- 作者:fengwenliuyan -- 发布时间:2020/2/23 21:53:00 -- 回复:(有点蓝)用户B如果没有刷新数据,怎么看得到其... 实际情况是: 用户A先登录加载了数据,并新增5行空行,并保存了,那么此时的5行空行,都是出于可编辑状态,且已上传至数据库; 然后,用户B登录加载数据,此时的5行空行将会一并显示在用户B的电脑上; 之后,用户A编辑其中一行数据,并保存; 但是,此时的用户B,并没有及时刷新数据,并且也在同一行上编辑数据,然后保存,那么,此前用户A所做的编辑,将被无视,并被用户B的编辑所覆盖。 应对思路: 在表的BeforSaveDatarow表事件中,加一个保存前的验证条件: 新增一列逻辑列“可保存”,只有“可保存”这一逻辑列为true时,选中行才允许被保存。 遇到的问题: If e.DataRow("可保存") = False Then e.Cancel = True End If 代码写好了,但是结果不成功? 请问,应该怎么解决这个问题? |
-- 作者:有点蓝 -- 发布时间:2020/2/23 23:02:00 -- “可保存”什么情况下为true?结果不成功指什么,"可保存"为false还是可以保存? 建议在选择不同行数据的时候重新加载一下这行数据 BeforeSelChange事件 If e.OldRange.RowSel <> e.NewRange.RowSel \'如果选择的是不同的行 If e.OldRange.RowSel >= 0 AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then \'而且原来选择的是一个有效的数据行 Dim r As Row = e.Table.Rows(e.NewRange.Rowsel) \'获得新选择的行 If r.DataRow.RowState = DataRowState.Unchanged Then \'如果这行还没有改 r.DataRow.Load ‘重新加载这行 End If End If End If 或者在StartEdit事件,开始编辑前加载器其它单元格的数据 If e.Row.DataRow.RowState = DataRowState.Unchanged Then e.Row.DataRow.Load End If |