0

我在UpdatePanel. UpdatePanel有一个AsyncPostBack与内部控件关联的触发器。这工作得很好。

我有另一个包含 SSRS 的控件ReportViewControl,我想根据上述回发事件的结果有条件地隐藏它UpdatePanel

ReportViewerControl不在 an 内部,UpdatePanel想保持这种方式。如何隐藏ReportViewerControl基于UpdatePanel另一个控件内部的回发事件?

我假设如果我将 放在ReportViewerControl里面会出现很多问题UpdatePanel,有人确定吗?

4

4 回答 4

1

您可以在更新面板内容模板中创建一个脚本并隐藏您的控制表单 javascript。

  <script type="text/javascript">
     Sys.Application.Add_load(MyFunctionThatHides);
   </script
于 2012-05-04T14:48:36.567 回答
1

ReportViewerControl 不在 UpdatePanel 内,我想保持这种方式。

我做了一个简单的把戏。我创建了另一个 Updatepanel 并在更新面板中放置了一个文字控件,此更新面板代码位于“您要隐藏的控件”之上

像这样的东西

 <asp:UpdatePanel ID="UpdatePanel5" runat="server" UpdateMode="Always" >
    <ContentTemplate>
          <asp:Literal runat="server" ID="literal1"></asp:Literal>
     </ContentTemplate>
  </asp:UpdatePanel>

然后在后面的代码中注入 CSS

像这样的东西

literalDvControl.Text = "<style> #YourControlID{ display:none;}</style>";

这似乎奏效了。基本上文字控制是注入样式标签,浏览器反应很快。

但请阅读有关此内容。 将 <body> 中的 <style> 标记与其他 HTML 一起使用

于 2017-01-26T16:15:10.230 回答
0

您可以在服务器上处理 Async AJAX 调用之后以及将响应返回给客户端/浏览器之前使用以下代码

this.Page.ClientScript.RegisterStartupScript(this.GetType(), "ShowHideReportViewerJSScript", <JS code to show/hide reportviewer>, true);

我假设您在 ASPX 页面上放置了脚本管理器

于 2012-05-04T14:56:19.923 回答
0
  1. 通过服务器端代码隐藏内容,而不是按照 Machinegon 的建议使用 javascript(可能由服务器通过回发注入)。
  2. 在您UpdatePanel要隐藏的其他内容周围花点时间。(你不能让当前的一个更大,但再做一秒应该不会造成问题。)让第二个更新面板设置与触发器相同的按钮。(您可以在更新面板之外有一个触发器,但您不能在更新面板之外更新内容。)如果更新是有条件的(您有时只是在单击按钮时更改内容),那么您可以设置仅触发第二个面板成为隐藏按钮,您Click在第一个按钮单击的处理程序中的代码中。
于 2012-05-04T15:07:53.327 回答