2013-10-19 45 views
0

我有一個ASP.NET應用程序 - 系統的一部分包含相當長的FormView,用於在系統上創建或更新作業。我們的客戶擔心的一個問題是潛在的數據丟失 - 即用戶在表單上進行更改,並忘記單擊「保存」。我們已經解釋說,網絡本身就是無國界的,這使得它很困難,但是這仍然是一個大問題。ASP.NET - 確保數據不會從FormView丟失的最佳方法?

顯而易見的'解決方案'是每次更改值時發回,但即使使用UpdatePanel,它也非常緩慢,用戶失去了專注的列。我們也在尋找捕獲任何鏈接並給用戶一個提示,說他們沒有保存,但是它留下了很多變數,比如他們關閉了瀏覽器。

我認爲我們可以建立一個JSON字符串,並使用jQuery來使用AJAX發佈到另一個頁面,並將更改保存到數據庫或將它們保留在他們的會話中,直到他們單擊保存,然後總是警告他們未保存的變化。

這聽起來很明智嗎?還是我錯過了任何明顯的東西?網上有很多應用程序可以自動保存,它們使用什麼方法?

+0

我想一個辦法是劃分不同區段/頁面的形式 – meda

回答

0

明顯的「解決方案」每一個值改變

時間

它,你就可以很好的解決方案來獲得數據保存爲回發用戶即將進行更改。它現在的理想是一天。

放鬆焦點,這可能不是問題,這個問題可能是因爲它放慢了頁面上的繁重代碼。嘗試編輯代碼並將其更改爲塊。所以每個塊只有在條件爲真時才被執行。通過這種方式,您可以將代碼縮小至其實際版本的近四分之一。

我們也在尋找捕獲任何鏈接並給用戶一個提示,說他們沒有保存,但是它留下了很多變量,比如他們關閉了瀏覽器。

是的,但要儘量減少這種情況,您可以嘗試使用簡單的技巧,使用||運算符。檢查任何事情,如果它改變了,提醒用戶並中斷執行。就像這樣:

if(value == changed) { 
    alert('You have not saved yet!'); 
    return false; 
} else if (sec_value == changed) { 
    // go on.. 
} 

這意味着,在停止代碼的執行,如果你發現一個未保存的值,這樣瀏覽器就不會去尋找任何更多的價值。

您可以使用您的第一個想法,即將數據保存在數據庫中。因爲用戶不喜歡堅持會話,他可能會刪除所有緩存和cookie,甚至重新安裝新的操作系統,所以這是一個問題。你應該始終保持數據在你身邊。

如果你會一直警告他們,他們會厭倦你的JS警報。由於這個原因,通過ajax在你身邊保存數據是最好的主意!