asp.net中gridview的乐观并发问题

asp.net中gridview的乐观并发问题,asp.net,c#-4.0,ado.net,Asp.net,C# 4.0,Ado.net,在asp.net for Gridview中,如何避免乐观并发? 当记录已经处于编辑模式时,用户如何限制不编辑?要检查数据是否已更改客户端: 我建议使用一个包含信息的文本框,该文本框与“css:visibility:hidden”相同,并且只读,包含原始信息。然后,如果用户更改了文本框的值而没有回发到服务器,则可以始终使用JavaScript在客户端进行检查 要锁定用户,请编辑: asp很难管理这一点,因为通信是异步的。 例如,您可以在databasetable“locked”(位)中添加一个新

在asp.net for Gridview中,如何避免乐观并发?
当记录已经处于编辑模式时,用户如何限制不编辑?

要检查数据是否已更改客户端:

我建议使用一个包含信息的文本框,该文本框与“css:visibility:hidden”相同,并且只读,包含原始信息。然后,如果用户更改了文本框的值而没有回发到服务器,则可以始终使用JavaScript在客户端进行检查

要锁定用户,请编辑:

asp很难管理这一点,因为通信是异步的。 例如,您可以在databasetable“locked”(位)中添加一个新列,如果有人进入编辑模式,您可以锁定数据集。然后,您可以检查来自其他用户的锁定值,并限制其编辑模式。(关心会话是否已用完等;可能使用时间戳作为锁,并在会话分钟过期后打开锁)

如果用户始终处于编辑模式:

你不能锁定他(如果你不回发到服务器并要求他锁定时间间隔(将由我的AJAX完成))。 您只能在他尝试保存更改时检查锁定的值。但这是因为他已经更改了一些值,这些值将被恢复。 如果他想覆盖这些更改,您可以问他是否可以看到数据库中更改的值


希望这有帮助,没有人

谢谢。但是我是通过代码绑定数据源的,那么如何设置乐观并发性呢?我怎样才能在不进行编辑的情况下限制用户呢?谢谢。。我尝试了你提到的第二种选择,但在会议期间有点困难。我有一个想法要解决:创建一个静态列表变量并分配给应用程序变量,当用户单击特定记录时需要将id存储在列表变量中,并且在更新或会话结束后必须从列表中删除id。为了在数据库中工作,我想在应用程序本身中进行维护。请帮帮我这个主意行得通吗?需要你有价值的想法。。。!例如,我建议将您在数据库中提到的列表作为自己的表格。因为如果你的应用程序崩溃,你会得到一些未定义的状态,无法做出反应。例如,当会话用完时,您可以通过时间戳进行锁定,并检查锁定的时间戳是否为15分钟前。或者,如果锁定数据的用户仍在处理数据(会话处于活动状态),则每隔一段时间签入一次。否则可以从数据库中删除锁。我建议将您的表格作为自己的站立表格存储在数据库中。谢谢。。我现在明白你的想法了。。我将使用会话编码