RadAjaxManager проблема при отображении / скрытии элемента управления при загрузке страницы - PullRequest
1 голос
/ 15 июня 2010

У меня есть веб-форма с выпадающим списком, меткой и текстовым полем. Как ниже:

<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

Проблема возникает при таком сценарии:

  1. SetupVisibility () скрывает текстовое поле и метку во время загрузки страницы.
  2. Я изменяю значение в выпадающем списке ddlTest.
  3. SetupVisibility () хочет показать текстовое поле и метку, но затем Я получаю ошибку : Microsoft JScript - runtime error: Cannot update control with ID: ctl00_CPH1_lblTest. The control does not exist. В чем проблема?

Ответы [ 2 ]

3 голосов
/ 15 июня 2010

Я решил проблему.Я обернул текстовое поле и метку в 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.Это решило проблему.

0 голосов
/ 15 июня 2010

Page_Init срабатывает при инициализации страницы. Во время этого события нет гарантии, что элементы управления были созданы ..

Попробуйте поместить свой код в Page_Load, поскольку к тому времени гарантированно будут созданы элементы управления.

...