我有一个带有一些文本框和字段验证器的更新面板。触发器是ddlUserTypeId。这个想法是,如果用户在下拉菜单中更改选定的值,则FilteredTextBoxExtension将被启用/禁用,具体取决于选定的值。
在我启用TextBoxExtenders之前,它可以正常工作。
之后,即使满足要求,也无法进行回发。
我该如何克服这个问题?
我需要每次都触发下拉菜单的回发。
HTML
<asp:UpdatePanel ID="pnlEnablePassword" runat="server" ChildrenAsTriggers="false">
<ContentTemplate>
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="textBox" />
<uc1:FilteredTextBoxExtender ID="txtPassword_FilteredTextBoxExtender" runat="server" Enabled="False" TargetControlID="txtPassword" FilterType="Numbers" />
<asp:RequiredFieldValidator ID="valReqPassword" runat="server" ControlToValidate="txtPassword" Display="Dynamic" ErrorMessage="Requiered"/>
<asp:TextBox ID="txtPasswordConfirm" runat="server" TextMode="Password" CssClass="textBox" />
<uc1:FilteredTextBoxExtender ID="txtPasswordConfirm_FilteredTextBoxExtender" runat="server" Enabled="False" TargetControlID="txtPasswordConfirm" FilterType="Numbers" />
<asp:RequiredFieldValidator ID="valReqPasswordConfirm" runat="server" ControlToValidate="txtPasswordConfirm" meta:resourcekey="valReqPasswordConfirm" Display="Dynamic" ErrorMessage="Requiered"/>
<asp:CompareValidator ID="valCompPasswordConfirm" runat="server" meta:resourcekey="valCompPasswordConfirm" Display="Dynamic" ControlToValidate="txtPasswordConfirm" ControlToCompare="txtPassword"/>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="chkEnablePassword" EventName="CheckedChanged" />
<asp:AsyncPostBackTrigger ControlID="ddlUserTypeId" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
事件处理程序
protected void UserTypeChanged(Object sender, EventArgs e)
{
txtPassword.Text = "";
txtPasswordConfirm.Text = "";
txtPassword.Enabled = chkEnablePassword.Checked;
txtPasswordConfirm.Enabled = chkEnablePassword.Checked;
valReqPassword.Enabled = chkEnablePassword.Checked;
valReqPasswordConfirm.Enabled = chkEnablePassword.Checked;
valCompPasswordConfirm.Enabled = chkEnablePassword.Checked;
}