1

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

 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);

这工作正常,除非回发后我需要另一个单选按钮列表。该列表绘制正确,包含所有正确的选项,但是现在当我第一次单击一个选项时,它会填充然后重置。需要第二次单击才能设置并触发 SelectedIndexChanged 事件。

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

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

4

1 回答 1

1

马特!

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

希望这对你有帮助!在此处查看有关ASP.NET 页面生命周期的更多信息。

于 2013-05-20T17:38:15.913 回答