Asp.net 为一个UpdatePanel禁用UpdateProgress
我正在对具有许多UpdatePanel和UpdateProgress控件的ASP.NET Web窗体应用程序进行一些更改 我已经添加了一个UpdatePanel,仅对于这个UpdatePanel,我想在这个UpdatePanel更新时停止所有UpdateProgress的显示 许多UpdateProgress控件没有设置AssociatedUpdatePanelID,因此在更新新的UpdatePanel时会显示它们 有没有一种方法可以排除UpdatePanel触发UpdateProgress而不显示关联的UpdatePanelid集?可能是一些JavaScriptAsp.net 为一个UpdatePanel禁用UpdateProgress,asp.net,webforms,Asp.net,Webforms,我正在对具有许多UpdatePanel和UpdateProgress控件的ASP.NET Web窗体应用程序进行一些更改 我已经添加了一个UpdatePanel,仅对于这个UpdatePanel,我想在这个UpdatePanel更新时停止所有UpdateProgress的显示 许多UpdateProgress控件没有设置AssociatedUpdatePanelID,因此在更新新的UpdatePanel时会显示它们 有没有一种方法可以排除UpdatePanel触发UpdateProgress而不
我在这里找到了一些解决方案,但它们要求您知道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
资料来源: