2013-02-15 62 views
0

在asp.net for Gridview中,如何避免樂觀併發? 當記錄處於編輯模式時,用戶如何限制不編輯?asp.net中gridview樂觀併發問題

+0

http://www.asp.net/web-forms/tutorials/data-access/accessing-the-database-directly-from-an-aspnet-page/implementing- optimistic-concurrency-with-the-sqldatasource-vb – Habib 2013-02-15 10:07:36

+0

謝謝。 但我通過代碼綁定數據源,然後如何設置樂觀併發? – Anand 2013-02-15 10:15:28

+0

我怎樣才能限制用戶編輯 – Anand 2013-02-15 10:30:53

回答

0

檢查,如果數據改變了客戶方:

我會建議其包含的信息和相同的文本框爲一個TextBox「CSS:能見度:隱藏」和只讀包含原始信息。那麼如果用戶更改了TextBox的值而不回發到服務器,則可以隨時使用JavaScript檢查客戶端。

鎖定用戶編輯:

其難以對ASP來管理這項事業的通信是asyncronious方式。 例如,您可以在數據庫表中添加一個「鎖定」(位)的新列,並且可以在有人輸入編輯模式時鎖定數據集。那麼您可以檢查其他用戶的鎖定值並限制他的編輯模式。 (關心會話耗盡等等;也許使用時間戳作爲鎖並在會話分鐘過期後打開鎖)。

如果用戶在編輯模式下alrdy:

你不能把他鎖(如果你不這樣做回發到服務器,並要求他在間隔鎖(會做我的AJAX))。 您只能在嘗試保存更改時檢查鎖定的值。但是這最終導致他改變了一些價值觀,並且他們會得到回覆。 也許你可以問他是否可以看到數據庫中改變的值,如果他想覆蓋這些改變。

希望這會有所幫助,沒有人

+0

謝謝..我在第二個選項嘗試了你提到的,但在會話時間有點困難。 我有一個想法來解決:創建一個靜態列表變量並分配給應用程序變量,當用戶單擊特定記錄時需要將該ID存儲在列表變量中,更新或會話結束後必須從列表中刪除該ID。爲了在數據庫中工作,我想在應用程序本身中進行維護。 請幫助我這個想法去工作? 需要你寶貴的想法......! – Anand 2013-02-15 11:11:48

+0

我建議將你在數據庫中提到的列表作爲自己的常規表格。 原因如果你的應用程序崩潰,你有一些未定義的狀態,並不能作出反應。例如,在會話耗盡的情況下,您可以通過時間戳創建鎖,並檢查鎖的時間戳是否爲15分鐘前。或者檢查鎖定數據的用戶是否仍在工作(會話存活)。否則你可以從數據庫中刪除鎖。 我建議將您的表格作爲獨立表格存儲在您的數據庫中。 – noonecares 2013-02-15 12:28:22

+0

謝謝.. 我很清楚現在你的想法..我會與會議代碼 – Anand 2013-02-15 12:57:04