2010-06-15 74 views
1

我有帶下拉列表,標籤和文本框的webform。如下所示:RadAjaxManager在頁面加載時顯示/隱藏控件時出現問題

<asp:DropDownList ID="ddlTest" runat="server" AutoPostBack="true"> 
</asp:DropDownList> 

<asp:Label ID="lblTest" runat="server" Text="Some text"> 
</asp:Label> 
<asp:TextBox ID="edtTest" runat="server"> 
</asp:TextBox> 

我想顯示/隱藏標籤和文本框,具體取決於在下拉列表中選擇的值。所以我加RadAjaxManader:

<rad:RadAjaxManager ID="RadAjaxManager1" runat="server"> 
    <AjaxSettings> 
     <rad:AjaxSetting AjaxControlID="ddlTest"> 
      <UpdatedControls> 
       <rad:AjaxUpdatedControl ControlID="lblTest" /> 
       <rad:AjaxUpdatedControl ControlID="edtTest" /> 
      </UpdatedControls> 
     </rad:AjaxSetting> 
    </AjaxSettings> 
</rad:RadAjaxManager> 

和程序「SetupVisibility」這需要從下拉列表中的值,做一些walidations和desides是否要顯示或隱藏的標籤和文本框。當我使用這樣的程序:

Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlTest.SelectedIndexChanged 
    SetupVisibility() 
End Sub 

它的作品不錯,但現在我想打電話給SetupVisibility當頁面加載:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    SetupVisibility() 
End Sub 

在這樣的情況下發生的問題:

  1. SetupVisibility()隱藏加載頁面時的文本框和標籤。
  2. 我更改ddlTest下拉列表上的值。
  3. SetupVisibility()想顯示文本框和標籤,但後來我得到錯誤Microsoft JScript - runtime error: Cannot update control with ID: ctl00_CPH1_lblTest. The control does not exist.問題在哪裏?

回答

3

我已經解決了這個問題。我裹着文本框和標籤到股利和麪板:

<div id="panelTest_DIV" runat="server"> 
    <asp:Panel ID="panelTest" runat="server"> 
    <asp:Label ID="lblTest" runat="server" Text="Some text..."></asp:Label><br /> 
    <asp:TextBox ID="edtTest" runat="server"></asp:TextBox> 
    </asp:Panel> 
</div> 

和AjaxManager:

<rad:AjaxSetting AjaxControlID="ddlTest"> 
    <UpdatedControls> 
    <rad:AjaxUpdatedControl ControlID="panelTest_DIV" /> 
    </UpdatedControls> 
</rad:AjaxSetting> 

SetupVisibility()我設置panelTest.Visibility。它解決了這個問題。

0

page_Init在頁面初始化時觸發。在這個事件期間,沒有保證已經創建了控件..

嘗試把你的代碼放在Page_Load中,因爲控件保證在那時被創建。

+0

我已經在Page_Load中做到了。我剛剛在我的問題上犯了一個錯誤。糾正。 – 2010-06-15 08:33:05

相關問題