我想根据用户在组合框中的选择隐藏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> 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 :(得分:0)
发生的情况如下 - 您在客户端切换文本框可见性,但随后发生回发。当文本框位于UpdatePanel内时,它们将再次呈现,并且切换操作将丢失。
你可以做两件事:
1)如果您在更改下拉值时正在执行的操作是切换文本框可见性,则可能会丢失AutoPostBack="True"
和OnSelectedIndexChanged
事件。
2)如果您做的不仅仅是并且需要服务器端调用,则可以在服务器端事件中设置文本框可见性。
答案 1 :(得分:0)
通常,在updatepanel中为控件添加处理程序时使用live()jQuery方法更安全
但是,我不确定它是否能解决你的问题