2013-10-19 39 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在你身边保存数据是最好的主意!