我有兩個頁面與更新面板。它在兩個頁面上具有相同的內容和相同的觸發器。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.
我有一個多視角內的另一個更新面板。但是因爲活動視圖不是在回發時使用更新面板的視圖,所以不會呈現更新面板。
我檢查並控制的所有父母都將屬性設置爲true。 – Alecu
我也在頁面中動態添加一些控件。這會造成麻煩嗎? – Alecu
它可以。除非將它們添加到Page_Init中,否則它們將不會添加到ViewState中,並且不會像您期望的那樣維護狀態,也可能根本就不存在。動態控制確實會導致問題 –