powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / viewstate и динамическое заполнение элемента
13 сообщений из 13, страница 1 из 1
viewstate и динамическое заполнение элемента
    #33953587
sergma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На странице пара DropDownList которые динамически заполняются
и потом перед ними в дерево контролов вставляется контрол (неважно какой, для простоты button)
Контролы после вставленного теряют свой viewstate после postback

Прошу прошенье, возможно вопрос глупый, с ASP.NET знаком недавно.

Код приведен.

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
for (int i = 0; i < 10; i++)
{
DropDownList1.Items.Add(new ListItem(i.ToString()));
DropDownList2.Items.Add(new ListItem(i.ToString()));
}
Button b = new Button();
b.ID = "lkjlkj";
b.Text = "lkjlkj";
Page.Form.Controls.AddAt(1,b);
}
}
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33953631
Paulmay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А ведь добавлять Button нужно каждый раз (а не только если !IsPostBack), и желательно это делать в Page_Init.
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33954608
sergma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Paulmay, Вы писали:

P>А ведь добавлять Button нужно каждый раз (а не только если !IsPostBack), и желательно это делать в Page_Init.

P>
данное сообщение получено с www.gotdotnet.ru
P>ссылка на оригинальное сообщение


Да конечно вы правы, в рабочем приложении добавлялось всегда а не только !IsPostBack и проблема все равно проявляется.

Вот пример исправленного кода, поведение прежнее: DropDownList'ы которые стоят после вставляемого элемента теряют свой ViewState после PostBack.

if (!IsPostBack)
{
for (int i = 0; i < 10; i++)
{
DropDownList1.Items.Add(new ListItem(i.ToString()));
DropDownList2.Items.Add(new ListItem(i.ToString()));
}

}
Button b = new Button();
b.ID = "button1";
b.Text = "button1";
Page.Form.Controls.AddAt(1, b);
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33954931
CyberRussia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы уверены, что это у вас в OnInit написанно, а не в Page_Load ?
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33955655
RustM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, sergma, Вы писали:

S>Здравствуйте, Paulmay, Вы писали:

S>Да конечно вы правы, в рабочем приложении добавлялось всегда а не только !IsPostBack и проблема все равно проявляется.

S>Вот пример исправленного кода, поведение прежнее: DropDownList'ы которые стоят после вставляемого элемента теряют свой ViewState после PostBack.


protected void Page_Init(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        for (int i = 0; i < 10; i++)
        {
            DropDownList1.Items.Add(new ListItem(i.ToString()));
            DropDownList2.Items.Add(new ListItem(i.ToString()));
        }
    }

    Button b = new Button();
    b.ID   = "button1";
    b.Text = "button1";
    Page.Form.Controls.AddAt(1, b);
}
Засунь всё это добро в OnInit (Page_Init)... << RSDN@Home 1.2.0 alpha rev. 655>>
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33955761
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, CyberRussia, Вы писали:

CR>Вы уверены, что это у вас в OnInit написанно, а не в Page_Load ?
а почему нельзя в Page_Load?... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33956439
sergma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, RustM, Вы писали:

RM>Здравствуйте, sergma, Вы писали:

S>>Здравствуйте, Paulmay, Вы писали:

S>>Да конечно вы правы, в рабочем приложении добавлялось всегда а не только !IsPostBack и проблема все равно проявляется.

S>>Вот пример исправленного кода, поведение прежнее: DropDownList'ы которые стоят после вставляемого элемента теряют свой ViewState после PostBack.

RM>
RM>protected void Page_Init(object sender, EventArgs e)
RM>{
RM>    if (!IsPostBack)
RM>    {
RM>        for (int i = 0; i < 10; i++)
RM>        {
RM>            DropDownList1.Items.Add(new ListItem(i.ToString()));
RM>            DropDownList2.Items.Add(new ListItem(i.ToString()));
RM>        }
RM>    }

RM>    Button b = new Button();
RM>    b.ID   = "button1";
RM>    b.Text = "button1";
RM>    Page.Form.Controls.AddAt(1, b);
RM>}

RM>
RM>Засунь всё это добро в OnInit (Page_Init)

Большое спасибо, помогло.
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33956599
CyberRussia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, CyberRussia, Вы писали:

CR>>Вы уверены, что это у вас в OnInit написанно, а не в Page_Load ?
C>а почему нельзя в Page_Load?
Потому что на этапе OnInit ViewState еще не сформирован. А для своего формирования (корректного) ему нужна та-же структура контролов, что и была в прошлый раз у страницы.
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33957363
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, CyberRussia, Вы писали:


CR>Потому что на этапе OnInit ViewState еще не сформирован. А для своего формирования (корректного) ему нужна та-же структура контролов, что и была в прошлый раз у страницы.
а если я добавлю в Page_Load, что структура контролов будет неверная, или ViewState не подцепится?
Единственно что не будет на этой стадии это что пришло из браузера, но после выхода из Page_Load и это подцепится.... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33957700
CyberRussia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, cadet354, Вы писали:

C>Здравствуйте, CyberRussia, Вы писали:


CR>>Потому что на этапе OnInit ViewState еще не сформирован. А для своего формирования (корректного) ему нужна та-же структура контролов, что и была в прошлый раз у страницы.
C>а если я добавлю в Page_Load, что структура контролов будет неверная, или ViewState не подцепится?
C>Единственно что не будет на этой стадии это что пришло из браузера, но после выхода из Page_Load и это подцепится.
Если добавляешь в Page_Load, то на этапе LoadViewState, который происходит до Page_Load, но после OnInit структура контролов сейчас будет отличаться от структуры контролов до , поэтому при формировании ViewState почти наверняка произойдет ошибка и вся страница вылетит с этой ошибкой. Имеется в виду работа страницы при PostBack.
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33958055
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, CyberRussia, Вы писали:


CR>Если добавляешь в Page_Load, то на этапе LoadViewState, который происходит до Page_Load, но после OnInit структура контролов сейчас будет отличаться от структуры контролов до , поэтому при формировании ViewState почти наверняка произойдет ошибка и вся страница вылетит с этой ошибкой. Имеется в виду работа страницы при PostBack.
что значит формирование ViewState, если проSaveViewState то он проходит после обработки событий контролов.
на какой стадии произойдет ошибка?... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33958859
CyberRussia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, cadet354, Вы писали:
C>что значит формирование ViewState, если проSaveViewState то он проходит после обработки событий контролов.
C>на какой стадии произойдет ошибка?
Я же написал Load VeiwState. На стадии работы метода LoadViewState класса System.Web.UI.Control (от которого унаследованны страницы).
...
Рейтинг: 0 / 0
viewstate и динамическое заполнение элемента
    #33958904
cadet354
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, CyberRussia, Вы писали:

CR>Здравствуйте, cadet354, Вы писали:
C>>что значит формирование ViewState, если проSaveViewState то он проходит после обработки событий контролов.
C>>на какой стадии произойдет ошибка?
CR>Я же написал Load VeiwState. На стадии работы метода LoadViewState класса System.Web.UI.Control (от которого унаследованны страницы).
и все это произойдет из-за:

Page.Form.Controls.Add At (1,b);// если без At то все будет работать и в случае добавления в Page_Load... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / viewstate и динамическое заполнение элемента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]