Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глючит валидацию, динамические создаваемую 
V
    Опции темы
cupper
Дата 31.8.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Сейчас опишу возникшую проблему как сферического коня в вакууме. 

на страницу динамически добавляется TextBox,  Валидатор (регулярка) для него, и Валидатор Field, примерно вот таким способом

Код

                   txtDate = new TextBox();
                   txtDate.ID = "txtDate";
                   leftCell.Controls.Add(txtDate);
....
                    rev = new RegularExpressionValidator();
                    rev.ID = "rev";
                    rev.ControlToValidate = txtDate.ID;
                    // без учета высокосного года
                    rev.ValidationExpression = @"(([0-2]\d\.02)|(([0-2]\d|3[01])\.(0[13578]|1[02]))|(([0-2]\d|30)\.(0[469]|11)))\.\d{4}";
                    sErrorMessage = "Указана некорректная дата";
                    rev.ErrorMessage = sErrorMessage;
                    rev.Display = ValidatorDisplay.Dynamic;
                    rev.ValidationGroup = sValidationGroup;
                    ErrorCell.Controls.Add(rev);
                    
                    rfv = new RequiredFieldValidator();
                    rfv.ID = "rfv";
                    rfv.ValidationGroup = sValidationGroup;
                    rfv.ControlToValidate = txtDate.ID;
                    sErrorMessage = "Не указана дата";
                    rfv.ErrorMessage = sErrorMessage;
                    rfv.Display = ValidatorDisplay.Dynamic;
                    ErrorCell.Controls.Add(rfv);

...

(это все пихаеться в панел, та еще в одну обертку и т.д. много слоев)
Код

table.Rows.Add(row);

                this.upUpdatePanel.ContentTemplateContainer.Controls.Add(table);
                this.Controls.Add(upUpdatePanel);

также на странице есть специальная копочка благодаря которой этот кусок кода выполняется сколько угодно много раз.

Проблема заключается в том что после того как нажимается кнопка "применить" (у которой тоже ValidationGroup = sValidationGroup)
валидация срабатывает, если значение были некорректные все ОК и дальше не идем. Если же значения удовлетворяют валидации то как и полагается валидация проходит успешно и выполняется обработчик кнопки, далее выполняется еще куча стандартного кода ( для обычной перерисовки страницы) И после того как страница перерисовалась вылазает сообщение о не пройденной валидации возле всех динамически созданных текст боксов (код приведенный выше) !!! 

почему оно вдруг отображается я не могу понять уже на протяжении целого дня. Вы моглибы подумать что гдето в той куче стандартного кода эта валидация каким то образом активируется, а я скажу что я эту валидацию добавил только сегодня и сразу началась такая какашка.

смотрел через fireBug разметку страницы, создается все нормально, имена корректные не повторяющиеся, валидаторы есть, до нажатия кнопки свойство display:none после обновление страницы оно исчезает и ErroMessage бельмом весит как какашка на заборе.

Что делать, где искать ума не приложу. 

Забыл упомянуть такую важную особенность, что валидатор RequiredFieldValidator при этом работает абсолютно корректно.

PM MAIL   Вверх
cupper
Дата 1.9.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



вот так сообщение о не прошедшей валидации отображается сразу после загрузки сраницы
Код

<span style="color: Red; display: none;" id="ctl00_phMain_ctrlFilterAndSortingControl1_oAddFilterElement25000_Value_rev">Указана некорректная дата</span>


вот так если ввести некоректную дату и убрать фокус (чтобы активировать валидацию)

Код

<span style="color: Red; display: inline;" id="ctl00_phMain_ctrlFilterAndSortingControl1_oAddFilterElement25000_Value_rev">Указана некорректная дата</span>


и вот так если ввести правильную дату нажуть кнопочку (валидация пройдет успешно, отработает обработчик кнопки, страница перерисуется)
Код

<span style="color: Red;" id="ctl00_phMain_ctrlFilterAndSortingControl1_oFilterElement0_Value_rev">Указана некорректная дата</span>


так для всех текстбоксов кроме последнего добавленного. Все предыдущие хранятся в специальном списке , а последний в отдельной переменной.
PM MAIL   Вверх
cupper
Дата 1.9.2010, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



ну хоть какие то идеи почему может слетать style display ? после перерисовки страницы
PM MAIL   Вверх
cupper
Дата 2.9.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



проблема была в формате даты возвращаемом с сервера клиенту, из за того что на клиенте при выводе в текстбокс она представлялась в другом формате.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.