2012-05-04 71 views
0

我有一個UpdatePanel內的控件。 UpdatePanel具有與內部控制相關的AsyncPostBack觸發器。這工作得很好。UpdatePanel和修改面板外的控件

我有另一個控件包含一個SSRS ReportViewControl,我想根據上面提到的UpdatePanel回發事件的結果有條件隱藏。

ReportViewerControl不是UpdatePanel我想保持這種方式內。如何根據另一個控件內的UpdatePanel的回發事件隱藏ReportViewerControl

我假設,如果我將ReportViewerControl放在UpdatePanel的內部,許多問題就會出現,任何人都知道嗎?

回答

0
  1. 通過服務器端代碼隱藏內容,而是按照Machinegon的建議使用javascript(可能通過服務器通過回發注入)。
  2. 圍繞您想要隱藏的其他內容再次輸入UpdatePanel。 (你不能讓當前的一個更大,但第二個不應該導致問題。)讓第二個更新面板設置與觸發器相同的按鈕。 (你可以在更新面板之外有一個觸發器,你不能更新更新面板以外的內容。)如果更新是有條件的(當點擊按鈕時你有時會更改內容),那麼你可以設置只觸發第二個面板爲隱藏按鈕,其中第一個按鈕單擊的處理程序代碼爲Click
1

您可以在更新面板內容模板中創建腳本並隱藏您的控件窗體javascript。

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

您可以使用處理在服務器和異步AJAX調用後下面的代碼只是返回到客戶端/瀏覽器

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

響應之前我假設你有ScriptManager的放在ASPX頁面

+0

感謝您的回覆。這種類型打破了我的模式,因爲我不認爲在調用該控件的回發時存在ReportViewer控件。是否有可能做類似的事情,而不是尋找另一個JS方法的控件,而這個JS方法可能是也可能不是從另一個控件註冊的。如果這是可能的,那麼當ReportViewer的控件加載時,我可以註冊另一個JS函數? –

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

這似乎是工作。基本上文字控制是注入風格標籤,瀏覽器很快反應。

但請仔細閱讀。 Using <style> tags in the <body> with other HTML

相關問題