У меня есть пользовательский элемент управления, где у меня есть две панели: одна слева, а другая справа, слева - некоторая информация для выставления счета покупателю, а справа - некоторая информация о доставке, каждое поле в информации о доставке имеет Обязательные для проверки поля, эти панели помещаются в панель обновления. Состояние по умолчанию - обе панели видны, под панелями есть флажок «Доставка такая же, как выставление счетов», когда вы отмечаете ее, панель справа «Панель доставки» исчезает, а затем вы продолжаете.
Проблема : Допустим, я удаляю текст в названии доставки и не щелкаю где-либо еще, затем я на некоторое время отмечаю флажок «То же, что и для выставления счета», он показывает проверку красным цветом, а затем оно исчезает. Я попытался создать функцию, которая отключает валидатор, т. Е.
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>
Codebehind:
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..
}
}