2013-05-20 1 views
1

У меня есть страница (с использованием MS Ajax). в зависимости от других параметров, мне может понадобиться создать список кнопок радио в панели. Это делается согласно ниже.Программно созданный RadioButtonList требует 2 клика

RadioButtonList rbl = new RadioButtonList(); 
    rbl.SelectedIndexChanged += new EventHandler(answer_Click); 
    rbl.AutoPostBack = true; 

    foreach (KeyValuePair<string, int> d in _answers) 
    { 
     ListItem li = new ListItem(d.Key.ToString(), d.Key.ToString()); 
     li.Attributes.Add("class", "radio");    
     rbl.Items.Add(li); 
    } 
    p.Controls.Add(rbl); 

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

Im разрушает и воссоздает rbl один раз answer_Click запускается (я знаю это, поскольку следующий вопрос, который создается, имеет разные ответы и варианты).

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

+0

А, это я всегда получаю ответ/находим его после публикации. Извините, это связано с тем, что я привязываю обработчик событий и вызываю методы Page.DataBind – Matt

ответ

1

Мэтт!

Похоже, у вас проблема ViewState. Элементы управления создаются после триггера LoadViewState, поэтому они не получают свои значения из браузера для загрузки. Вы должны сохранить это значение где-то, используя JS, ViewState, QueryString, Session, DB, чтобы сохранить состояние, а затем загрузить выбранное значение в каждый из них.

Надеет, что это поможет вам! Загляните сюда для получения дополнительной информации о ASP.NET Page Life Cycle.

Смежные вопросы