Проверка все еще отображается, хотя и отключена

У меня есть пользовательский элемент управления, где у меня есть две панели, одна слева, а другая справа, слева есть некоторая информация о выставлении счетов клиента а справа - информация о доставке, каждое поле в информации о доставке имеет валидатор requiredfield, эти панели заключены в панель обновлений. По умолчанию обе панели видны, под панелями есть флажок с надписью «Доставка такая же, как при выставлении счетов», когда вы отметите его, панель справа «Панель доставки» исчезнет, ​​а затем вы продолжите.

Проблема : Допустим, я удаляю текст в названии доставки и больше нигде не нажимаю, затем я устанавливаю флажок «Так же, как при выставлении счета», на мгновение он показывает подтверждение красным цветом, а затем исчезает.Я попытался создать функцию, которая отключает валидатор, т.е.

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..
    }
}
5
задан user710502 14 February 2012 в 20:05
поделиться