Заполнитель, содержащий динамическую таблицу, пуст, если я не создаю таблицу дважды - PullRequest
0 голосов
/ 05 июня 2010

Я динамически создаю таблицу, которая содержит текстовое поле в каждой ячейке. Таблица помещена в элемент управления заполнителем. Все отображается отлично. Проблема в том, когда я иду, чтобы получить значения, введенные в ячейках. У меня есть код для генерации таблицы в отдельном методе под названием CreateTable (). Чтобы моя программа могла найти таблицу в заполнителе при сохранении, мне нужно запустить CreateTable () в событии обратной передачи И в событии PageLoad. Если я вызываю CreateTable () только в одном из этих мест и пытаюсь сохранить, он говорит, что заполнитель пуст, и, следовательно, я не могу сохранить содержимое текстового поля. Я пытался вызвать CreateTable () из InitLoad, но это не работает, потому что он должен ссылаться на значения из трех статических элементов управления: 1 раскрывающийся список, 1 список и 1 элемент управления календаря, который, я не думаю, что их представление состояния уже отрисовано , У кого-нибудь есть идеи? Было бы неплохо не удваивать количество обращений к базе данных только для того, чтобы эта работа работала.

1 Ответ

0 голосов
/ 06 июня 2010

Добро пожаловать в удивительный мир ViewState и динамических элементов управления: -)

Если вы используете оба (ViewState и динамические элементы управления), вам придется воссоздавать свои элементы управления в каждом запросе, потому что они необходимы для восстановления ViewState.Разделите ваш код на код создания элемента управления (CreateTable?) И код для заполнения элементов управления (FillTable?).Лучшее место для кода создания элемента управления - событие PageInit.Это часть кода, которая должна выполняться в каждом запросе.Разместите другой код там, где он вам нужен (Postback ?, LoadEvent?).Эта часть кода должна выполняться один раз.После этого он становится частью ViewState.

Если часть кода, создающая элемент управления, зависит от ViewState (значения ваших статических элементов управления), у вас большие проблемы.Вы не можете получить доступ к ViewState в PageInit!Используйте другой метод хранения (SessionState?), Чтобы сохранить эту информацию и перенаправить на свою страницу.

...