2017-09-06 67 views
0

我有我的兩個頁面上不同的UpdatePanel和他們每個人都由被放置在不同的中繼不同的按鈕觸發,updapenels正常工作,從衝突避免我已經設置好的他們UpdateMode =「Conditional」但我無法確定觸發的updapanel的id爲被觸發的UpdatePanel的ID只

InitializeRequestEndRequest事件,我需要確定哪些updatepanel觸發,然後我可以做這個updapanel指定一些客戶端的動畫。

Thanx。

回答

0

因此,所有的研究後,最好的做法看起來像這樣:

使用Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest)Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(InitializeRequest)

我將自己所有的觸發像

<asp:LinkButton Text="Detay" data-sid="PickAppToShow" CssClass="btn btn-default btn-sm" ID="lbtSelectApplication" runat="server" /></td> 

,並在請求處理的數據屬性看like that

function InitializeRequest(sender, args) { 
    try { 
     var consernedObject = getAjaxObjectFromSender(sender); 
     consernedObject.Start(); 

    } 
    catch (e) { 
     fn_ErrorLog(e); 
    } 
    }; 

function EndRequest(sender, args) { 
    try { 
     var consernedObject = getAjaxObjectFromSender(sender); 
     consernedObject.End(); 

    } 
    catch (e) { 
     fn_ErrorLog(e); 
    } 


}; 

helper方法是這樣的:

function getAjaxObjectFromSender(sender) { 
    var poster = sender._activeElement; 
    if (poster == null) { 
     return DefaultObject; 
    } 
    var posterSid = poster.getAttribute('data-sid'); 
    if (posterSid == null) { 
     return DefaultObject; 
    } 
    var consernedObject = window[posterSid]; 
    if (consernedObject == null) { 
     return DefaultObject; 
    } 
    return consernedObject; 
} 

訣竅是從現在開始,你就上述window[posterSid]看到給你定名爲JS對象。如果你檢查我的RequestHandlers;他們正在使用consernedObject.Start();consernedObject.End();兩種方法,這兩種方法在另一個名爲AjaxObjects的js文件中預定義。

例如:

var DefaultObject = { 
    Start: function() { 
     //When Progress Start  
     App.blockElement($(window), "Pleae wait"); 
    }, 
    End: function() { 
     //When Progress End 
     App.unblockElement($(window)); 
    } 
}; 

var PickAppToShow = { 
    Start: function() { 
     //When Progress Start  
     App.blockElement($("#app-detail-content"), "Asking To Server"); 
    }, 
    End: function() { 
     //When Progress End 
     App.unblockElement($("#app-detail-content")); 
    } 
}; 


var PickMemberToDetail = { 
    Start: function() { 
     //When Progress Start  
     App.blockElement($(window), "Wait For It"); 
    }, 
    End: function() { 
     //When Progress End 
     $("#modal-MembershipDetail").modal("show"); 
     App.unblockElement($(window)); 
    } 
}; 

這種方法解決了我所有的問題,但我需要從服務器端的參數,可以通過使用hiddenField來achived之一。

相關問題