Контейнер вкладок - событие кнопки не запускается - PullRequest
3 голосов
/ 21 марта 2010

В контейнере вкладок, скажем, у меня есть две вкладки [Tab1 & Tab2]

В Tab1 есть 2 текстовых поля с валидатором обязательного поля

В Tab2 есть 3 текстовых поля с валидатором обязательного поля

Теперь, даже если я заполняю все текстовые поля в TAB1, я не могу отправить обратно.[потому что текстовые поля TAB2 по-прежнему пусты]

& Когда я заполняю все текстовые поля [Оба Tab1 и Tab2], кнопка срабатывает правильно.

Как этого избежать ??

Я имею в виду, что пользователь должен заполнить данные для TAB1 и может предоставить данные.В то время я не хочу, чтобы валидация TAB2 работала.

Пожалуйста, помогите и дайте мне знать, если требуется что-то еще.

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

Добавьте ValidationGroup="Tab1" свойство к элементам управления и их соответствующим валидаторам, которые находятся на первой вкладке, и ValidationGroup="Tab2" для элементов второй вкладки.

1 голос
/ 06 июля 2011

Или вы добавляете валидаторные группы программно:

protected void Page_Init(object sender, EventArgs e)
{
    foreach (TabPanel tp in Tabs1.Tabs)
        SetValidatorGroup(tp.Controls, string.Format("{0}_ValidatorGroup", tp.ID));
}

private void SetValidatorGroup(ControlCollection cc, string validatorGroup)
{
    foreach (Control c in cc)
    {
        if (c is BaseValidator)
        {
            //Response.Write(string.Format("ValidationGroup '{0}' on Control {1}<br />", validatorGroup, c.ID));
            ((BaseValidator)c).ValidationGroup = validatorGroup;
        }
        else if (c is IButtonControl)
        {
            //Response.Write(string.Format("ValidationGroup '{0}' on Control {1}<br />", validatorGroup, c.ID));
            ((IButtonControl)c).ValidationGroup = validatorGroup;
        }
        else
            SetValidatorGroup(c.Controls, validatorGroup);
    }
}
...