2012-05-07 41 views
0

我想爲我們的客戶可以編輯某些字段的工作編寫應用程序。當他們點擊編輯時,代碼將鎖定要編輯的數據。當他們點擊保存時,數據將解鎖。但是,我無法決定在他人點擊其他地方時是否可以解鎖數據,轉到其他頁面或網站,甚至關閉瀏覽器。確定是否有人離開網頁的好方法

什麼是確定用戶是否已離開編輯頁面的好方法? (我們使用C#.NET 3.5和JQuery以及SQL Server 2005數據庫)。

+0

這個'鎖'在哪裏發生?在服務器上? – n8wrl

+0

在C#代碼中,我有一個引用數據庫中的鎖表的鎖類 – cdub

+3

恕我直言,你的設計非常糟糕 - 你永遠不要在交互式情況下做這種悲觀的鎖定。與Web應用程序...實施一個樂觀的戰略,而不是! – Yahia

回答

2

如果您確實必須使用悲觀鎖定,您可以添加檢入Session_End並解鎖此用戶在當前會話中設置的所有鎖定。使用onUserExit jQuery插件,如果用戶關閉瀏覽器窗口或轉到其他網站上結束會話,這裏是例子:

https://stackoverflow.com/a/10481972/351383

+0

您是否在用戶界面上放置了JavaScript?你能在這個頁面上做到這一點嗎http://www.userfirst.com/creations/onuserexit/ –

0

你的問題被理解爲「什麼是決定用戶是否有一個好辦法放棄編輯頁面而沒有點擊「保存」來解鎖該字段?

但是我無法確定當他們點擊其他地方,轉到其他頁面或站點,甚至關閉瀏覽器時是否可以解鎖數據。

從某個應用程序查看另一個頁面的所有場景可能意味着同一個會話中的另一個窗口 - 可能需要檢查某些內容。您不希望觸發解鎖,因爲您的用戶仍然可以打開一個可以提交編輯的窗口。

用戶離開頁面的其他場景可以使用onUserExit。

但是,您從此列表中省略了「用戶去午餐離開網頁打開」的情景。這就是爲什麼悲觀鎖定有問題。

因此,將該問題改爲「用戶點擊了編輯,但未能在合理的時間限制內進行修改並保存」。

基本上,你的鎖應該在某個時間點過期。

點擊'編輯'後,保存鎖定啓動並啓動一個定時器(5分鐘?),該定時器也在屏幕上可見。 (如果讓這些同步是一個問題,使客戶端計時器比服務器端計時器短)。您的用戶必須進行更改並在此時間內點擊保存。你可以添加一個Extend按鈕來延長時間。

原理是,你需要確定有人已經離開它太久,而不是有人離開它。您還向用戶展示點擊了「編輯」,您希望他們儘快進行編輯。

您需要對系統進行編碼才能解鎖鎖定已過期的字段。

這樣做的好處是您的倒計時對於那些需要這種編輯鎖定的人來說看起來很酷。

2

您可以利用html標籤的「onunload」事件。此事件被提出 - 當頁面被關閉時使用X按鈕 - 當頁面被重定向時(在您的情況下,用戶點擊編輯並移動到另一個鏈接而不保存。)

希望這有助於!

相關問題