(Новое в ViewStates) Как лучше всего сохранить динамически сгенерированный элемент управления в viewstate? - PullRequest
1 голос
/ 03 октября 2011

Я создаю веб-приложение на Asp.net, и я все еще довольно нов.Я только начинаю оборачиваться основами ViewState.В моем приложении люди ищут в базе данных, и я даю им способы сузить их поиск.Когда они ввели действительное ограничение поиска (например, дата после 10/1/11), я динамически добавляю другой набор элементов управления, позволяющий им добавлять другое ограничение.Я хочу сохранить содержимое предыдущего ограничения (набор элементов управления), чтобы оно оставалось на веб-странице, когда они вводят следующее ограничение.

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

Как бы я поступил так?

Большое спасибо, ребята.

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

Самый простой способ отследить состояние представления для динамических элементов управления - это воссоздать элементы управления в OnInit и назначать один и тот же идентификатор элементам управления каждый раз, когда страница отправляется обратно.Если элементам управления назначается один и тот же идентификатор при каждом создании, когда загружается ViewState, элементы управления будут заполнены заново.

protected override void OnInit(EventArgs e)
{
    TextBox txt = new TextBox();
    txt.ID = "txt1";
    this.Controls.Add(txt);
}

РЕДАКТИРОВАТЬ

Комусделать вещи проще, попробуйте использовать DynamicControlsPlaceHolder.Просто поместите элемент управления на страницу, и он сохранит элементы управления и их значения за кулисами:

http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx

1 голос
/ 03 октября 2011

Проверить эту ссылку:

ViewState для динамических элементов управления по-прежнему поддерживается платформой ASP.NET. Просто убедитесь, что вы добавили их во время init или preinit, потому что viewstate загружается для каждого элемента управления между этапами init и load.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...