Asp.net 在UpdateProgress期间隐藏UpdatePanel

Asp.net 在UpdateProgress期间隐藏UpdatePanel,asp.net,javascript,updatepanel,updateprogress,Asp.net,Javascript,Updatepanel,Updateprogress,我正在寻找最简单的方法,在等待提交响应返回时隐藏UpdatePanel。 Stuff—使用Ajax控制工具包和UpdatePaniMationExtender既过分,又会导致一些问题,即: 因为页面中有两个隐藏的面板,所以它会变得一团糟,并隐藏错误的面板。我不知道为什么会这样 我找不到一种方法来指定只有一个按钮应该触发动画。我确实在UpdatePanel中指定了一个,但是它似乎被忽略了,面板中的所有控件都会触发动画 一个简单的javascript解决方案将是理想的。这里的问题是ASP.NET

我正在寻找最简单的方法,在等待提交响应返回时隐藏UpdatePanel。 Stuff—使用Ajax控制工具包和UpdatePaniMationExtender既过分,又会导致一些问题,即:

  • 因为页面中有两个隐藏的面板,所以它会变得一团糟,并隐藏错误的面板。我不知道为什么会这样
  • 我找不到一种方法来指定只有一个按钮应该触发动画。我确实在UpdatePanel中指定了一个,但是它似乎被忽略了,面板中的所有控件都会触发动画
一个简单的javascript解决方案将是理想的。这里的问题是ASP.NET喜欢在运行时为控件生成奇怪的ID。有什么解决办法吗


提前感谢。

您可以在html页面中使用代码标记,并使用控件的ClientId属性吐出asp.net生成的id:

$('#<%= elementName.ClientID %>').hide();
$('#').hide();

编辑:这个例子使用jQuery,顺便说一句,我建议使用jQuery。这会让你的事情变得更容易。因此,要解决“奇怪的ID”问题,您可以执行如下jQuery:

$('#<%= someASPControl.ClientID %>').hide();
$('#').hide();
并表明:

$('#<%= someASPControl.ClientID %>').show();
$('#').show();

这是使用jQuery按id获取元素,然后您可以使用它做任何您想做的事情。诀窍是“.ClientID”,它将获取.net发送的id。

处理PageRequestManager
beginRequest
endRequest
事件,以控制回发期间UpdatePanel的可见性:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(
        function (sender, args) {
            $get("<%=someUpdatePanel.ClientID %>").style.display = "none";
        }
    );
    prm.add_endRequest(
        function (sender, args) {
            $get("<%=someUpdatePanel.ClientID %>").style.display = "";
        }
    );
var prm=Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(
函数(发送方,参数){
$get(“”).style.display=“无”;
}
);
prm.add_endRequest(
函数(发送方,参数){
$get(“”.style.display=“”;
}
);

还将DisplayAfter=“0”添加到关联的UpdateProgress控件,以防止UpdatePanel隐藏和UpdateProgress显示之间的延迟这是一个很好的答案,但是,当页面上有多个更新面板时,它不起作用,因为它们都会触发此操作。@Shiroy:在beginRequest函数中,您可以使用
args.get_updatePanelSoupDate()获取发起请求的更新面板的ID