2011-09-07 72 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的方法

但是,我不知道它是否会解决您的问题