Динамическое управление в asp.net - PullRequest
0 голосов
/ 03 июня 2009

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

Кажется, placeholder1.controls.clear () удаляет его.

  protected void Page_Load(object sender, EventArgs e)
{
    bind();
}
protected void bind()
{
    PlaceHolder1.Controls.Clear();        
    DropDownList ddl = new DropDownList() { AutoPostBack = true, ID="ddl" };
    ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
    ddl.Items.Add("hi");
    ddl.Items.Add("bye");
    PlaceHolder1.Controls.Add(ddl);
}
void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    bind();
}

Ответы [ 4 ]

1 голос
/ 03 июня 2009

Возможно ли ... чтобы состояние просмотра запомнило выбранное значение ...?

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

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

1 голос
/ 03 июня 2009

Попробуйте удалить метод PlaceHolder1.Controls.Clear();,

и переведите Bind() звонок из Page_Load в OnInit

Вы столкнетесь с проблемами жизненного цикла, так же, как вы это делаете, поскольку загрузка viewstate и кода запуска событий уже произошли до того, как вы заново создадите свои элементы управления

1 голос
/ 03 июня 2009

Попробуйте вызвать bind () из Page_Init ().

ViewState загружается после Page_Init (), но до Page_Load (), поэтому, когда вы вызываете bind () из Page_Load (), вы вызываете его после того, как .NET попытался и не смог установить выбранное значение вашего DropDownList.

0 голосов
/ 03 июня 2009

Почему бы просто не скрыть PlaceHolder, установив Visible в false? Кроме того, см. Истинное понимание динамических элементов управления , чтобы понять, когда нужно динамически вводить данные, поскольку динамические элементы управления далеки от простых.

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