Javascript для определения начала и конца AsyncPostback определенной панели обновления - PullRequest
3 голосов
/ 25 августа 2010
<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, но я хочу, чтобы он работал для панели обновления.Не слишком знакомый с JS, я не знаю, где мне сделать модификацию.

Помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

Лучшее решение на данный момент:

var cmdAuthoriseButton ='<%= cmdAuthorise.ClientID %>'; 

function beginReq(sender, args){ 

   if (cmdAuthoriseButton == args._postBackElement.id)

   {

       // shows the Popup 

       $find(ModalProgress).show();        

   }

} 
0 голосов
/ 25 августа 2010

Инициировать запуск довольно легко, потому что что-то должно вызвать его, так что вы всегда можете добавить код к тому, что вызывает обновление.

Чтобы запустить завершение обновления 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]);
        }
    }
}
...