ASP.NET 系统多用户同时操作表单问题

时间:2022-08-29 11:48:50
请问各位,对于BS系统,如何控制多用户同时操作同一张表单的问题,比如说用户A先打开编号为001表单,修改了部分数据没有保存,这时用户B也打开了表单001,修改了数据并保存,后来A又保存了表单...,请问各位 这中情况在BS里如何控制?

我之前都是做CS的,在CS里比较容易控制,如果A先开发了001,在服务器端作一个标记,如果B也打开了001,这时B的界面只能只读的,并提示B当前的表单已经被谁打开了。

12 个解决方案

#1


你那个只读的方法,同样可以用啊

#2


引用 1 楼  的回复:
你那个只读的方法,同样可以用啊

在BS里不太好控制界面只读吧,
在CS里:当退出当前界面时  将服务端标记的界面打开的消息去掉,在BS里如何实现?,当点击 浏览器的关闭按钮 或 直接 结束浏览器的进程,BS系统如何捕捉当前用户已经退出了某个表单的页面?

#3


遍历一下页面控件,通通设为只读或者直接把提交按钮禁用就好的,剩下的你CS怎么做的BS就怎么做

#4


  BS是在你点击保存时检查的,所以用你原来的数据库设计办法是可行的。

如果你要再做得好一点儿,做得能实时检查是否有其它人在修改,可以用ajax把保存禁用或是解除禁用。

#5


打开后,直接对记录进行锁定处理

#6


每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

#7


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?

#8


引用 7 楼  的回复:
引用 6 楼 的回复:

每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?


随你定义啊,如果这条记录的最后更新时间超过1分钟,你还给他操作吗? 总之比你的5秒+加载页面的时间大就行了

#9


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

这得多浪费服务器资源啊?

#10


cs中你如果a一直不提交怎么办?就一直占用着?
可以给后修改的人一个提示信息,提示数据已经被其他人修改过,是否仍然要继续修改

#11


引用 8 楼  的回复:
引用 7 楼  的回复:
引用 6 楼 的回复:

每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?


随你定义啊,如果这条记录的最后更新时间超过1分钟,你还给他操作吗? 总之比你的5秒+加载页面的时间大就行了

假如用户修改表单 修改了一半,出去上了一个厕所(假设10分钟),如果按你说的 意思的话,那么这个用户是放弃修改了,其他用户可以修改这个表单。 但对于这个用户来说 他没有放弃当前修改的东西。
我个人觉得  最好是 客户端浏览器 主动通知 服务端 用户放弃或结束了表单的编辑,但现在不知道 如果 用户浏览器关闭浏览器 或结束浏览器进程,这是服务端如何知道?
不知道其他成熟的ERP BS系统是如何实现这样的功能的,比如说用友金蝶等。。。

#12


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开


只要他还停留在当前页面,不管人在不在,js都会定时触发服务器,更新最后时间的啊,如果最后时间离现在已经很久了,说明这条信息没有人在占用

#1


你那个只读的方法,同样可以用啊

#2


引用 1 楼  的回复:
你那个只读的方法,同样可以用啊

在BS里不太好控制界面只读吧,
在CS里:当退出当前界面时  将服务端标记的界面打开的消息去掉,在BS里如何实现?,当点击 浏览器的关闭按钮 或 直接 结束浏览器的进程,BS系统如何捕捉当前用户已经退出了某个表单的页面?

#3


遍历一下页面控件,通通设为只读或者直接把提交按钮禁用就好的,剩下的你CS怎么做的BS就怎么做

#4


  BS是在你点击保存时检查的,所以用你原来的数据库设计办法是可行的。

如果你要再做得好一点儿,做得能实时检查是否有其它人在修改,可以用ajax把保存禁用或是解除禁用。

#5


打开后,直接对记录进行锁定处理

#6


每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

#7


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?

#8


引用 7 楼  的回复:
引用 6 楼 的回复:

每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?


随你定义啊,如果这条记录的最后更新时间超过1分钟,你还给他操作吗? 总之比你的5秒+加载页面的时间大就行了

#9


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

这得多浪费服务器资源啊?

#10


cs中你如果a一直不提交怎么办?就一直占用着?
可以给后修改的人一个提示信息,提示数据已经被其他人修改过,是否仍然要继续修改

#11


引用 8 楼  的回复:
引用 7 楼  的回复:
引用 6 楼 的回复:

每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开

你的这个长时间是多长时间?


随你定义啊,如果这条记录的最后更新时间超过1分钟,你还给他操作吗? 总之比你的5秒+加载页面的时间大就行了

假如用户修改表单 修改了一半,出去上了一个厕所(假设10分钟),如果按你说的 意思的话,那么这个用户是放弃修改了,其他用户可以修改这个表单。 但对于这个用户来说 他没有放弃当前修改的东西。
我个人觉得  最好是 客户端浏览器 主动通知 服务端 用户放弃或结束了表单的编辑,但现在不知道 如果 用户浏览器关闭浏览器 或结束浏览器进程,这是服务端如何知道?
不知道其他成熟的ERP BS系统是如何实现这样的功能的,比如说用友金蝶等。。。

#12


引用 6 楼  的回复:
每隔5秒,用ajax判定一次状态,如果还是当前SessionID操作,就更新一下时间,如果长时间没有更新状态,说明对方已经离开


只要他还停留在当前页面,不管人在不在,js都会定时触发服务器,更新最后时间的啊,如果最后时间离现在已经很久了,说明这条信息没有人在占用