У меня есть требование добавить RequiredFieldValidator и RegularExpressionValidator в динамически созданное текстовое поле в динамически сгенерированной табличной ячейке внутри веб-пользовательского элемента управления в области содержимого страницы, созданной мастером.Валидатор кошмара при динамическом управлении C#
Проблема, как вы можете догадаться, пытается динамически установить свойство ControlToValidate для просмотра динамически созданного текстового поля.
После некоторых исследований код Сейчас:
- Создает панель (как я слышал ControlToValidate и валидатор должен находиться в том же контейнере). Первоначально это было местозаполнитель, но он попытался предложить следующее предложение.
- Создает текстовое поле и устанавливает его идентификатор.
- Добавляет текстовое поле на панель.
- Создает RequiredFieldValidator.
Устанавливает идентификатор элемента ControlToValidate. Значения я пытался использовать:
- Идентификатор элемента управления
- ClientID контроля
- идентификатор элемента управления с префиксом добавленный текст сервер присоединяет к дочерним элементам управления веб-элемента управления пользователя
- Клиент ID модифицировано таким же образом
- имя элемент управления (на авось)
- имени элемента управления приставкой текста сервер добавляет к именам элементов управления
- с использованием заказ Метод рекурсивного FindControl в попытке бросить новый объект управления для Textbox, а затем, используя свой идентификатор и ClientID
- UniqueID контроля
- тот же модифицированный с префиксом, как описано выше
- Добавить валидатор на панель.
- Добавить панель на стол.
Излишне говорить, что я все еще не могу убедить валидатор «видеть» элемент управления, который он должен проверять, и я полностью не вхожу в новые способы решения этой проблемы.
EDIT: Дальнейшая детективная работа привела меня к тому, что страница не имеет проблемы до завершения события page_load. Кажется, что у сервера возникла проблема после завершения выполнения кода для построения страницы. Я начинаю задаваться вопросом, действительно ли я добавляю элементы управления в именования контейнеров слишком поздно, а не слишком рано.
Любые предложения?
Включены ли ваши динамические элементы управления во время события PreInit()? –
Нет. Это не так. Зачем? – 2009-05-14 15:51:53
только мои 2cents..Any элементы управления, которые динамически создаются, будут потеряны в postback..Lets говорят, что вы динамически создаете некоторые поля и кнопки через перечисление. Для того чтобы кнопки существовали и имели возможность выполнить событие click, вы должны сделайте следующее .. – foxtrotZulu