UpdatePanel和修改Panel外部的控件

时间:2012-05-04 14:43:42

标签: c# asp.net ajax reporting-services ajaxcontroltoolkit

我在UpdatePanel内有一个控件。 UpdatePanel具有与内部控件关联的AsyncPostBack触发器。这很好用。

我有另一个包含SSRS ReportViewControl的控件,我希望根据上面提到的UpdatePanel的回发事件的结果来条件隐藏。

ReportViewerControl不在UpdatePanel内,而我希望保持这种方式。如何根据另一个控件中ReportViewerControl的回发事件隐藏UpdatePanel

我假设如果我将ReportViewerControl放在UpdatePanel内,很多问题都会出现,任何人都知道吗?

4 个答案:

答案 0 :(得分:1)

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

  <script type="text/javascript">
     Sys.Application.Add_load(MyFunctionThatHides);
   </script

答案 1 :(得分:1)

  

ReportViewerControl不在UpdatePanel中,我会   喜欢这样做。

我做了一个简单的伎俩。我创建了另一个Updatepanel,并将文字控制端放在更新面板上,此更新面板代码位于&#34;您要隐藏的控件上&#34;

类似这样的事情

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

然后在Code中我注入了CSS

类似这样的事情

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

这似乎有效。基本上字面控制是注入样式标记,浏览器很快就会做出反应。

但请阅读此内容。 Using <style> tags in the <body> with other HTML

答案 2 :(得分:0)

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

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

我假设您在ASPX页面上放置了scriptmanager

答案 3 :(得分:0)

  1. 通过服务器端代码隐藏内容,而是按照Machinegon的建议使用javascript(可能由服务器通过回发注入)。
  2. 在要隐藏的其他内容周围插入第二个UpdatePanel。 (你不能让当前的那个更大,但是制作第二个应该不会引起问题。)让第二个更新面板设置与触发器相同的按钮。 (您可以使用更新面板之外的触发器,您无法更新更新面板之外的内容。)如果更新是有条件的(您有时仅在单击按钮时更改内容),则可以设置只触发第二个面板成为隐藏按钮,您在第一个按钮点击处理程序的代码中Click