当前位置:  开发笔记 > 编程语言 > 正文

你如何锁定在线表格?

如何解决《你如何锁定在线表格?》经验,为你挑选了1个好方法。

我们有一个基于传递的表单的Web应用程序.不幸的是,当人们看到它时,它是可编辑的.因此,两个人可以同时编辑它并覆盖他们的更改.您如何将表单(以及同一表单的任何多个部分,因为它分解为多个页面)向下锁定,这样一次只能有一个人编辑它?

我们只希望他们能够一次性编辑表格半小时(他们可以保存并继续增加更多时间).


我有一个解决方案,但我想看看其他人的想法.

在我的解决方案中,当用户首先查看表单(或表单的任何部分,因为有多个部分都需要锁定)时,在按下编辑按钮之前,所有字段都不可编辑.一旦他们点击编辑按钮,就会输入一个标记,其中包含用户ID和开始时间.然后将它们重定向到可编辑的相同表单.页面底部会有一个javascript计时器,让他们知道他们还剩多少时间.完成后,他们点击"保存并退出"按钮保存更改,为其他用户解锁表单,然后返回到不可编辑的表单.为了避免使用后退按钮返回可编辑的表单,我认为将使用包含javascript重定向的中间页面.

如果他们想要编辑其中一个子表单(有按钮将它们从主表单重定向到子表单),他们只需在编辑模式下单击其中一个按钮,它就会保存大表单,更新时间到给他们另外半个小时,并将他们重定向到可编辑的子表单.

当用户试图查看当前正由另一个用户编辑的表单时,编辑按钮将显示为灰色,并显示当前用户的信息以及应该打开的时间,但这次可以在保存和编辑子表单时由用户更改.


这听起来像一个可行的解决方案吗?如果必须做同样的事情,请让我知道你的问题的解决方案是什么?



1> Jack Ryan..:

有很多方法可以解决这种情况.一个是锁定表单,一次只允许一次编辑.另一种方法是在保存和警告用户时检测冲突.

锁定对于具有高争用的资源最有用.如果预计会发生多次冲突,那么使用户单击编辑按钮效果最佳.这应该将记录标记为锁定在数据存储区中,并且应该只允许一个用户编辑它.当用户保存记录或用户取消时,需要解锁记录.在网页等断开连接的情况下,一段时间后也应该自动解锁.

通过记录修订号或最后编辑的日期时间并在查看页面时将其传递给客户端来完成碰撞检测.然后,客户端在命中save时将其传递回服务器,并根据数据库中的值进行检查.如果值已更改,则其他人已编辑该记录,并且可以向用户发出警告.这个系统对于小编辑工作得更好,并且当资源不太可能在别处编辑时(通常情况下,与活动用户数相比有许多小记录).

我发现检测到碰撞效果更好,对Web应用程序中的用户来说不那么令人沮丧.只要他们输入的文字足够小.这是因为锁定资源可以比它需要的时间更长,这非常令人沮丧

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有