【问题标题】:UpdatePanel and modifying controls outside of the PanelUpdatePanel 和修改面板外的控件
【发布时间】:2012-05-04 14:43:41
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      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>";
      

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

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

      【讨论】:

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

          • 感谢您的回复。这打破了我的模式,因为我不假设在调用此控件的回发时存在 ReportViewer 控件。是否可以做类似的事情,但不是寻找一个控件,而是寻找另一个可能已经或可能没有从另一个控件注册的 JS 方法。如果可以的话,我可以在加载带有 ReportViewer 的控件时注册另一个 JS 函数?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-16
          相关资源
          最近更新 更多