<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(endRequest);
prm.add_initializeRequest(initializeRequest);
var _postBackElement;
function initializeRequest(sender, e)
{
if (prm.get_isInAsyncPostBack())
{
e.set_cancel(true);
}
_postBackElement = e.get_postBackElement();
document.getElementById('loadingm').style.visibility = 'visible';
}
function endRequest(sender, e)
{
$find('PopCustom_').show();
document.getElementById('loadingm').style.visibility = 'hidden';
}
</script>
此代码适用于每个AsyncPostback,但我希望它能够在特定于Update-Panel的情况下运行。 不太熟悉JS,我不知道我在哪里做修改。
非常感谢帮助。
答案 0 :(得分:1)
目前为止的最佳解决方案是:
var cmdAuthoriseButton ='<%= cmdAuthorise.ClientID %>';
function beginReq(sender, args){
if (cmdAuthoriseButton == args._postBackElement.id)
{
// shows the Popup
$find(ModalProgress).show();
}
}
答案 1 :(得分:0)
触发启动非常简单,因为必须触发它,以便始终可以将代码添加到触发刷新的任何内容中。
要触发正在刷新的UpdatePanel
的完成并不是那么简单,但框架提供了一些javascript功能来帮助解决这个问题。以下javascript代码将触发UpdatePanel
刷新完成:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.pageLoaded(YourJavascriptFunctionNameHere);
//or
prm.add_pageLoaded(YourJavascriptFunctionNameHere);
然后实现您注册的功能:
function YourJavascriptFunctionNameHere(sender, args)
{
// do something
}
如果您需要,可以使用相同的方法来处理UpdatePanel
刷新的开始以及使用
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.beginRequest(YourJavascriptFunctionNameHere);
// or
prm.add_beginRequest(YourJavascriptFunctionNameHere);
我认为您可以找出导致sender
或args
参数更新的元素,但您需要在MSDN上阅读有关此函数的更多信息。
编辑:(来自MSDN文章,一个确定哪个UpdatePanel
正在刷新的示例)
function beginRequest(sender, args) {
postbackElement = args.get_postBackElement();
}
function pageLoaded(sender, args) {
var updatedPanels = args.get_panelsUpdated();
if (typeof(postbackElement) === "undefined") {
return;
}
else if (postbackElement.id.toLowerCase().indexOf('external') > -1) {
for (i=0; i < updatedPanels.length; i++) {
panelUpdatedAnimation.animatePanel(updatedPanels[i]);
}
}
}