在一个带有大型更新面板的相当复杂的屏幕上,我遇到了以下问题:
如果用户非常快地点击某个按钮6或7次,它似乎最终会处理最后一个请求,并且会出现问题。具体来说,会话状态中有一个xml文档,它不同步。
我真正想做的是阻止点击此按钮,直到回发完成。我知道我可能会找到一个简单的方法来使用Javascript,但它似乎可能是内置的。
有什么想法?
注意:以下答案很有帮助,但它们没有解决问题。使用onClientClick禁用链接按钮,然后在再次启用回发后允许它返回后,问题仍然存在。即使已经在屏幕上绘制了新的启用链接按钮,这几乎就像更新面板没有完成所有内容一样。
更多笔记(已解决!):我使用BlockUI(jQuery插件)解决了这个问题。请参阅下面的答案。
答案 0 :(得分:3)
ASP.NET UpdatePanel始终遵循最后一个请求。如果您在处理请求时发出请求,则会终止第一个请求并处理当前请求。它的设计和制造是为了这种方式。
点击后,我会用JavaScript禁用该按钮。
答案 1 :(得分:1)
的UpdatePanel?我假设您正在使用MS AJAX,如果是这样,我建议您下载AJAX工具包,如果您还没有这样做。此工具包附带了许多随时可用的控件和扩展,可帮助您使用支持AJAX的应用程序。例如,有一个名为“ConfirmButton”的扩展程序可以帮助您防止用户多次单击按钮,而且它也可以非常酷和优雅的方式完成。
另一种选择是使用JavaScript或更好的方法,创建一个自定义按钮控件,在单击它后可以禁用该属性,如果这样做,在其他应用程序中重用它将非常容易。 / p>
希望这有帮助。
答案 2 :(得分:1)
在一个家庭推出的AJAX框架中我曾经工作了一段时间,我们只是在javascript(带有许多参数的javascript函数调用)中记录了最后一个调用,并阻止了后续调用相同的参数。这不是理想的,但它在紧要关头做了伎俩。
答案 3 :(得分:1)
我在infragistics控件中遇到了一些“Asyc”问题,但在Scripmanager中添加ScriptMode =“Release”之后问题就解决了。
答案 4 :(得分:0)
以下链接在大约半小时内解决了我的问题。刚刚使用javascript禁用(我尝试了几种不同的方式......)由于updatepanel的时间安排而没有做到这一点。
Disabling UpdatePanels While an Asynchronous Postback is in Progress