2

我正在寻找在等待提交响应返回时隐藏 UpdatePanel 的最简单方法。像这里描述的东西-使用 Ajax Control Toolkit 和 UpdatePanelAnimationExtender 都是矫枉过正并导致一些问题,即:

  • 因为页面中有几个隐藏的面板,所以它变得一团糟并隐藏了错误的面板。我不知道为什么会这样;
  • 我找不到一种方法来指定只有一个按钮应该触发动画。我确实在 UpdatePanel 中指定了一个,但它似乎被忽略了,面板内的所有控件都会触发动画。

一个简单的 javascript 解决方案将是理想的。这里的问题是 ASP.NET 喜欢在运行时为控件生成奇怪的 ID。有什么解决方案吗?

提前致谢。

4

3 回答 3

2

处理 PageRequestManagerbeginRequestendRequest事件以在回发期间控制 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 = "";
        }
    );

还将 DisplayAfter="0" 添加到关联的 UpdateProgress 控件中,以防止 UpdatePanel 隐藏和 UpdateProgress 显示之间的延迟

于 2013-04-02T11:16:47.650 回答
0

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

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

编辑:这个例子使用 jQuery btw

于 2010-03-24T16:16:30.863 回答
0

我建议使用 jQuery。它会让你的事情变得更容易。因此,要解决“奇怪的 ID”问题,您可以像这样执行一些 jQuery:

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

并显示:

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

这是使用 jQuery 通过 id 抓取一个元素,然后你可以用它做你想做的事。诀窍是“.ClientID”,它将获取 .net 发出的 id。

于 2010-03-24T16:20:08.970 回答