2013-07-02 113 views
2

我有兩個頁面與更新面板。它在兩個頁面上具有相同的內容和相同的觸發器。Asp .Net更新面板不更新

這是它的外觀:

     <div id="rating"> 
        <span class="rateTxt">Rate</span> 
        <telerik:RadRating ID="RadRating1" runat="server" ItemCount="5" SelectionMode="Continuous" 
         Precision="Item" Skin="Default" OnRate="RadRating1_Rate" AutoPostBack="true"> 
        </telerik:RadRating> 
       </div> 
      </li> 
     </ul> 
      <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
       <ContentTemplate> 
        <div id="divAddMessage" runat="server" visible="false"> 
         <span class="rateTxt">Do you want to add a comment?</span> 
         <asp:TextBox runat="server" ID="txtComment" TextMode="MultiLine" Rows="3" Width="195"> 
         </asp:TextBox> 
         <br /> 
         <br /> 
         <asp:ImageButton runat="server" ID="lnkAddComment" ImageUrl="~/App_Themes/123reg/Images/submit-rating.png" 
          OnClick="lnkAddComment_Click" OnClientClick="showSuccessMessage();" /> 
         <br /> 
         <br /> 
        </div> 
       </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="RadRating1" EventName="Rate" /> 
       </Triggers> 
      </asp:UpdatePanel> 

現在,當用戶速率的東西與RadRating率觸發事件導致回發。

在處理程序的速度事件中,我做到以下幾點:

protected void RadRating1_Rate(object sender, EventArgs e) 
    { 
     divAddMessage.Visible = true; 
    } 

相同的代碼正好是2頁。在一個頁面上,它更新divAddMessage,它變得可見,但在另一個頁面上它不可見。即使我將它設置爲在該頁面上可見時,當它再次回發時,即使在上述處理程序中將Visible屬性設置爲true,Visible屬性仍然爲false。

我只在aspx文件和上述處理程序中將visibily設置爲false,我將其設置爲true。

事實證明,我得到在JavaScript控制檯中的錯誤:

Sys.InvalidOperationException: Sys.InvalidOperationException: Could not find UpdatePanel with ID 'ctl00_mainContentPlaceHolder_updatePanel'. If it is being updated dynamically then it must be inside another UpdatePanel. 

我有一個多視角內的另一個更新面板。但是因爲活動視圖不是在回發時使用更新面板的視圖,所以不會呈現更新面板。

回答

3

檢查父容器元素divAddMessage。他們是否將其可見性設置爲false?如果是這樣,那麼即使您明確將其設置爲true,子元素也將始終爲Visible=false。這在過去讓我很生氣。

只是一個想法

+0

我檢查並控制的所有父母都將屬性設置爲true。 – Alecu

+0

我也在頁面中動態添加一些控件。這會造成麻煩嗎? – Alecu

+0

它可以。除非將它們添加到Page_Init中,否則它們將不會添加到ViewState中,並且不會像您期望的那樣維護狀態,也可能根本就不存在。動態控制確實會導致問題 –

0

我有一個自定義的控制,並在aspx文件將Visible屬性設置爲false,申報,這是壓倒一切的控制本身內的任何子元素的可見性。