Asp.net 为一个UpdatePanel禁用UpdateProgress

Asp.net 为一个UpdatePanel禁用UpdateProgress,asp.net,webforms,Asp.net,Webforms,我正在对具有许多UpdatePanel和UpdateProgress控件的ASP.NET Web窗体应用程序进行一些更改 我已经添加了一个UpdatePanel,仅对于这个UpdatePanel,我想在这个UpdatePanel更新时停止所有UpdateProgress的显示 许多UpdateProgress控件没有设置AssociatedUpdatePanelID,因此在更新新的UpdatePanel时会显示它们 有没有一种方法可以排除UpdatePanel触发UpdateProgress而不

我正在对具有许多UpdatePanel和UpdateProgress控件的ASP.NET Web窗体应用程序进行一些更改

我已经添加了一个UpdatePanel,仅对于这个UpdatePanel,我想在这个UpdatePanel更新时停止所有UpdateProgress的显示

许多UpdateProgress控件没有设置AssociatedUpdatePanelID,因此在更新新的UpdatePanel时会显示它们

有没有一种方法可以排除UpdatePanel触发UpdateProgress而不显示关联的UpdatePanelid集?可能是一些JavaScript


我在这里找到了一些解决方案,但它们要求您知道UpdateProgress的ID。在这个应用程序中有太多的UpdateProgress,我不想每一个都指定。

好的,没有答案,我已经进一步研究并提出了客户端解决方案

如果UpdateProgress控件没有关联的UpdatePanel,并且触发部分回发的UpdatePanel至少有一个与之关联的UpdateProgress,则此脚本将禁用其显示

长话短说:如果UpdatePanel具有关联的UpdateProgress控件,那么当它触发部分回发时,只有这些控件才会显示

<script type="text/javascript">

    //array of original values
    var updateProgressDefaults = [];

    Sys.Application.add_init(appl_init);

    function appl_init() {

        var c = Sys.Application.getComponents();
        for (var i = 0; i < c.length; i++) {
            if (Object.getType(c[i]).getName() == "Sys.UI._UpdateProgress" && !c[i]._associatedUpdatePanelId) {
                updateProgressDefaults[c[i].get_id()] = c[i]._associatedUpdatePanelId;
            };
        }

        var pgRegMgr = Sys.WebForms.PageRequestManager.getInstance();
        pgRegMgr.add_initializeRequest(BeginHandler);
        pgRegMgr.add_endRequest(EndHandler);
    }

    function BeginHandler(sender, args) {
        //There is no _updatePanelsToUpdate if a trigger is outside of an UpdatePanel
        if (!args._updatePanelsToUpdate) return;

        //Check if the affected UpdatePanel has an associated UpdateProgress control
        var hasUpdateProgress = false;

        var c = Sys.Application.getComponents();
        for (var i = 0; i < args._updatePanelsToUpdate.length; i++) {
            for (var j = 0; j < c.length; j++) {
                if (Object.getType(c[j]).getName() == "Sys.UI._UpdateProgress" && args._updatePanelsToUpdate[i].replace(/\$/g, "_") == c[j]._associatedUpdatePanelId) {
                    hasUpdateProgress = true;
                    break;
                }
            }

            if (hasUpdateProgress) break;
        }

        //If the UpdatePanel has an associated UpdateProgress control then set all the UpdateProgress controls without associated UpdatePanels to a non-existant UpdatePanel
        if (hasUpdateProgress) {
            for (var i = 0; i < c.length; i++) {
                var id = c[i].get_id();
                var type = Object.getType(c[i]).getName();
                if (type == "Sys.UI._UpdateProgress" && !c[i]._associatedUpdatePanelId) {
                    c[i]._associatedUpdatePanelId = "NullUpdateProgress";
                };

            }
        }
    }

    //Restores AssociatedUpdatePanelId for all UpdateProgress controls
    function EndHandler() {
        for (var key in updateProgressDefaults) {
            $get(key).control._associatedUpdatePanelId = updateProgressDefaults[key];
        }
    }
</script>

//原始值数组
var updateProgressDefaults=[];
Sys.Application.add_init(appl_init);
函数appl_init(){
var c=Sys.Application.getComponents();
对于(变量i=0;i
资料来源: