簡體   English   中英

僅獲取觸發的updatepanel的ID

[英]Get id of triggered updatepanel only

我有我的頁面上有兩個不同的UpdatePanel和他們每個人都通過放置在不同中繼器不同的按鈕觸發,妥善updapenels工作和沖突,以避免我已經設置好的自己的UpdateMode =“有條件的”,但我不能確定的ID updapanel正在觸發

InitializeRequestEndRequest事件中,我需要確定觸發了哪個updatepanel ,然后才能執行此updapanel上指定的一些客戶端動畫。

謝謝

因此,經過所有研究,最佳實踐如下所示:

使用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>

在請求處理程序看起來像

    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);
    }


};

輔助方法就像:

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));
    }
};

這種方法解決了我所有的問題,但是我需要從服務器端獲取一個參數,可以通過使用hiddenFieldhiddenField

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM