我有一个带有下拉列表、标签和文本框的网页。如下所示:
<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“会对是否显示或隐藏标签和文本框进行一些修改。当我像这样使用这个程序:
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在这种情况下会出现问题:
Microsoft JScript - runtime error: Cannot update control with ID: ctl00_CPH1_lblTest. The control does not exist.问题在哪里?发布于 2010-06-15 09:47:36
我已经解决了问题。我已经将文本框和标签包装成div和面板:
<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。它解决了问题。
发布于 2010-06-15 08:25:48
当页面初始化时会触发Page_Init。在此事件中,没有创建控件的监护人。
尝试将您的代码放入Page_Load中,因为届时控件将被保证已经创建。
https://stackoverflow.com/questions/3043537
复制相似问题