2010-06-15 2 views
1

У меня есть веб-форма с раскрывающимся списком, ярлыком и текстовым полем. Как показано ниже:Проблема 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 и ПОСТОНАВЛЯЕТ ли, чтобы показать или скрыть метку и текстовое поле. Когда я использую процедуру так:

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. Я только что ошибся в своем вопросе. Исправленный. –

Смежные вопросы