2010-06-15 40 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

相关问题