проблема postBack при программном добавлении веб-элементов управления - PullRequest
1 голос
/ 21 ноября 2011

У меня есть проблема, которую я не могу найти решение, хотя есть очень похожие вопросы к ней.

В основном у меня есть текстовые поля, которые программно создаются в моем методе Page_Load. Они заполнены значениями из определенных файлов cookie.

У меня есть кнопка «Обновить», которая при нажатии должна обновить cookie, который был загружен в текстовое поле.

Таким образом, я дал идентификатор текстового поля, то же имя, что и файл cookie, а затем в методе On_Click кнопки обновления я прокручиваю текстовые поля и обновляю файл cookie (имя идентификатора) значением в тексте. коробка.

Однако это не работает. Я попробовал следующее:

Элементы управления просто создаются в методе onload. Затем, когда вы нажимаете кнопку после изменения текстового поля, метод onload вызывается снова, таким образом, текстовое поле возвращается к исходному и обновляется так, как оно было.

Элементы управления создаются в методе onload после проверки на if (!Page.IsPostBack). Это не работает, потому что метод загрузки страницы вызывается первым и не создает элементы управления на экране. Вы остались с пустым экраном и без обновленных файлов cookie.

Я попытался EnableViewState, который не работал, и я попытался создать элементы управления самостоятельно, когда (Page.IsPostBack), но все еще ничего.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Юо следует создать элементы управления в методе onLoad и присвоить им начальное значение внутри блока кода if (!Page.IsPostBack). Таким образом, вы будете каждый раз создавать дерево элементов управления, но не будете повторно инициализировать значения, теряя обновленные значения.

1 голос
/ 21 ноября 2011

Вы должны создавать элементы управления во время события Init, и вы должны делать это при каждой загрузке (не проверяйте IsPostBack).Чтобы эти элементы управления вызывали обратные вызовы и устанавливали их свойства из состояния просмотра, они должны находиться на странице hiearchy до запуска событий.

Если вы просто создаете элементы управления во время Init, а затем устанавливаете толькоданные в событии Load после проверки IsPostBack сохранят текст, введенный на веб-сайте, так как они сначала будут инициализированы, а затем заполнены данными представления состояния.

...