Управление динамикой потеряно при обратной передаче

Опять старый каштан.

Моя страница построена следующим образом; У меня есть выпадающий список, который привязан к базе данных при первой загрузке. Когда пользователь выбирает значение из этого, выполняется обратная передача, которая затем привязывает данные к элементу управления повторителем.

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

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

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

Что мне нужно сделать, чтобы поддерживать динамические элементы управления через обратную передачу, вызванную нажатием кнопки сохранения?


person sparkymark75    schedule 02.06.2011    source источник


Ответы (2)


Проблема в том, что когда вы нажимаете кнопку сохранения, вероятно, вы не повторно связываете повторитель, и элементы управления, которые вы добавили во время выполнения с помощью события ItemDataBound, больше не доступны (потому что они больше не существуют) Почему бы вам не добавить эти контролировать во время разработки с помощью функции Eval установить значение скрытого поля?

person Massimiliano Peluso    schedule 02.06.2011
comment
Причина, по которой я создаю их динамически, заключается в том, что я выводю матрицу элементов управления, поэтому я не знаю заранее, сколько столбцов или строк там будет. - person sparkymark75; 02.06.2011
comment
вам нужно вызвать привязку данных ретранслятора, прежде чем вы получите доступ к элементам управления, которые вы добавили во время выполнения (я предполагаю, что в событии ItemDataBound) вам потребуется управлять как первой привязкой данных, так и способом дважды привязать данные ретранслятора. - person Massimiliano Peluso; 02.06.2011

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

person Vir    schedule 02.06.2011