2011-09-07 9 views
0

콤보 상자에서 사용자가 선택한대로 UpdatePanel의 텍스트 상자를 숨기려고합니다. 그것은 UpdatePanel 외부에서 잘 작동하지만 UpdatePanel 내부에 넣을 때 더 이상 작동을 멈추고 더 이상 텍스트 상자를 숨기지 않습니다. 이것에 대해 제발 도와 주실 수 있나요? 감사.UpdatePanel에 여전히 텍스트 상자가 표시됩니다.

내 코딩은 다음과 같습니다 :

<script language="javascript" type="text/javascript"> 

     var prm = Sys.WebForms.PageRequestManager.getInstance(); 
     prm.add_endRequest(BindControls); 

     $().ready(function() {  

      BindControls();  

      $("#<%= ddlType.ClientID %>").change();  

     }); 

     function BindControls() { 

      $("#<%= ddlType.ClientID %>").change(function() { 
       ShowHideCalendars(); 
      }); 
     } 

     function ShowHideCalendars() { 
      $("#trDates").toggle($("#<%= ddlType.ClientID %>").val() == "T1"); 
     } 

    </script> 

     <asp:UpdatePanel runat="server"> 
      <contenttemplate> 
     <asp:DropDownList runat="server" id="ddlType" AutoPostBack="True" 
        onselectedindexchanged="ddlType_SelectedIndexChanged">    
      <asp:ListItem>T1</asp:ListItem> 
      <asp:ListItem>T2</asp:ListItem>    
     </asp:DropDownList> 

     <table> 
      <tr> 
       <td>Row 1</td> 
      </tr> 
      <tr id="trDates"> 
       <td>From: <asp:TextBox ID="TextBox1" runat="server" CssClass="dtpicker"></asp:TextBox>&nbsp;&nbsp;To: <asp:TextBox ID="TextBox2" runat="server" CssClass="dtpicker"></asp:TextBox></td> 
      </tr> 
      <tr> 
       <td><asp:Literal ID="ltStatus" runat="server" Text="You haven't selected."></asp:Literal></td> 
      </tr> 
     </table> 
     </contenttemplate> 
     </asp:UpdatePanel> 

답변

0

은 무슨 일 다음과 같다 - 클라이언트 측의 텍스트 상자의 가시성을 전환하는,하지만 다시 게시가 발생합니다. 텍스트 상자가 UpdatePanel 안에 있으면 다시 렌더링되고 해당 토글 액션은 손실됩니다. 당신이 할 수있는

두 가지 :

1) 드롭 다운 값이 때 변화가 텍스트 상자의 가시성을 전환되어 모든 일을, 당신은 AutoPostBack="True"OnSelectedIndexChanged 이벤트를 상실 할 수 있습니다.

2) 더 많은 작업을 수행하고 서버 측 호출이 필요한 경우 서버 측 이벤트에서 텍스트 표시 여부를 설정할 수 있습니다.

0

보통, 내가이 문제를 해결할 수 있는지 확실하지 않다, updatepanel 내부 컨트롤에 대한 처리기를 추가 할 때

그러나 라이브() jQuery를 방법을 사용하는 것이 안전합니다

관련 문제