以编程方式创建单选按钮列表需要2次单击

时间:2013-05-20 15:39:54

标签: asp.net

我有一个页面(使用MS Ajax)。根据其他选项,我可能需要在Panel中创建一个单选按钮列表。 这是按照以下方式完成的。

 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 List。列表正确绘制,具有所有正确的选项,但现在当我第一次单击某个选项时,它会填充然后重置。需要再次单击才能设置并触发SelectedIndexChanged事件。

一旦answer_Click被触发,我就会摧毁并重新创建rbl(我知道这是因为创建的下一个问题有不同的答案和选项)。

那么,关于为什么我需要在第二个List上点击两次的任何想法?

1 个答案:

答案 0 :(得分:1)

马特!

看起来您有ViewState问题。在LoadViewState触发器之后创建控件,因此它们不会从浏览器获取其值以进行加载。您必须在某处保存此值,使用JS,ViewState,QueryString,Session,DB来持久化状态,然后将所选值加载到每个值中。

希望这对你有所帮助!有关ASP.NET Page Life Cycle的详细信息,请查看此处。