【发布时间】:2012-02-14 18:02:02
【问题描述】:
我有一个用户控件,其中有两个面板,一个在左侧,另一个在右侧,左侧是一些客户账单信息,右侧是一些运输信息,运输信息中的每个字段都有一个 requiredfieldvalidator,这些面板被包装在一个更新面板中。默认状态是两个面板都是可见的,面板下方有一个复选框,上面写着“运输与计费相同”,当您选中它时,右侧的面板“运输面板”消失,然后您继续。
问题:假设我删除了运输名称中的文本并且我没有点击其他任何地方,然后我转到复选框“与计费相同”一会儿,它以红色显示验证,然后然后它消失了。我尝试创建一个禁用验证器的函数,即
RequireFieldValidator1.Enabled = false;
它工作正常,因为它在运输面板消失之前不显示验证,但可以说我改变主意并再次单击它以显示它。现在,当我删除运输面板中的名称并单击其他位置时,它不会让我去任何地方,但它不会显示验证文本。
所以我做了这个逻辑:
if (ckSameBilling.checked)
{
RequiredFieldValidator.Enabled = false;
}
else
{
RequiredFieldValidator.Enabled = true;
}
但现在它又回到了我上面演示的相同行为,清除运输名称并单击复选框.. 我可以立即看到红色验证。
相关代码
//All this is wrapped in an update panel
<asp:Panel ID="pnl" runat="server"><div>
asp:TextBox ID="txtShippingFirstName" runat="server" Width="130px" Columns="30"
MaxLength="100" asp:TextBox><div>
<asp:RequiredFieldValidator ID="Requiredfieldvalidator1" ErrorMessage="Name Required"
ControlToValidate="txt"
runat="server" Display="Dynamic" CssClass="Error">
</asp:RequiredFieldValidator>
</asp:Panel>
<div style="margin-left: 145px;">
<asp:CheckBox ID="Billing" runat="server" Font-Bold="True"
Text"Same as Billing" OnCheckedChanged="Billing_CheckedChanged"
AutoPostBack="True" />
</div>
代码隐藏:
protected void Billing_CheckedChanged(object sender, EventArgs e)
{
if (Billing.Checked)
{
//Disable the shipping fields validations
DisableEnable(true);
pnl.Visible = false;
}
else
{
DisableEnable(false);
pnl.Visible = true;
}
}
private void DisableEnable(bool enable)
{
if (enableFields)
{
Requiredfieldvalidator1.Enabled = false;
//a bunch of required validations below...
}
else
{
Requiredfieldvalidator1.Enabled = true;
//a bunch of required validations below..
}
}
【问题讨论】:
标签: c# asp.net validation requiredfieldvalidator