我有一个页面(使用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上点击两次的任何想法?
答案 0 :(得分:1)
马特!
看起来您有ViewState问题。在LoadViewState触发器之后创建控件,因此它们不会从浏览器获取其值以进行加载。您必须在某处保存此值,使用JS,ViewState,QueryString,Session,DB来持久化状态,然后将所选值加载到每个值中。
希望这对你有所帮助!有关ASP.NET Page Life Cycle的详细信息,请查看此处。