2010-06-15 2 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과 뉴디 사이즈를 수행합니다. 이 같은 절차를 사용하는 경우 :

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 : SetupVisibility() 안에 내가 panelTest.Visibility을 설정

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

합니다. 그것은 문제를 해결했습니다.

0

Page_Init은 페이지가 초기화 될 때 시작됩니다. 이 이벤트가 진행되는 동안 컨트롤이 생성 된 것은 아닙니다.

Page_Load에 코드를 입력하면 컨트롤이 다음과 같이 생성 된 것으로 보장됩니다.

+0

Page_Load에서 이미 수행했습니다. 나는 내 질문에 실수를 저질렀다. 수정 됨. –

관련 문제