我试图以随机顺序将数据添加到RadioButtonList(如下面btnGetQuestion_Click中所示),但是,在回发(btnCheck_Click)上,RadioButtonList中的所选项目将更改为列表中的其他项目。为什么会发生这种情况以及有关如何避免这种情况的任何建议?
的.aspx:
<form id="form1" runat="server">
<div>
<asp:Button ID="btnGetQuestion" runat="server" Text="Get Question" OnClick="btnGetQuestion_Click" />
<asp:Label ID="lblQuestion" runat="server" Text=""></asp:Label>
<asp:RadioButtonList ID="rblQuestions" runat="server"></asp:RadioButtonList>
<asp:Button ID="btnCheck" runat="server" Text="Check Answer" OnClick="btnCheck_Click" />
<asp:Label ID="lblAnswer" runat="server" Text=""></asp:Label>
<asp:Label ID="lblError" runat="server" Text=""></asp:Label>
</div>
</form>
C#:
protected void btnGetQuestion_Click(object sender, EventArgs e)
{
Random ran = new Random();
var numbers = Enumerable.Range(1, 5).OrderBy(i => ran.Next()).ToList();
List<ListItem> ans = new List<ListItem>();
ans.Add(new ListItem("option 1", "y"));
ans.Add(new ListItem("option 2", "n"));
ans.Add(new ListItem("option 3", "n"));
ans.Add(new ListItem("option 4", "n"));
ans.Add(new ListItem("option 5", "n"));
foreach (int num in numbers)
{
rblQuestions.Items.Add(ans[num - 1]);
}
}
protected void btnCheck_Click(object sender, EventArgs e)
{
}
答案 0 :(得分:1)
在将列表项添加到列表的代码中,您将添加具有相同值“n”的多个列表项。如果您选择其中一个值为'n'的项目,则在回发之后将选择一个值为'n'的项目(可能是第一个)。如果需要保持正确的选择,则需要为每个复选框绑定不同的值。 我认为您必须将选项和值对保留在单独的视图状态变量中,将选项1绑定,选项2 ...作为单选按钮列表的值,并在进一步处理期间从viewstate变量中获取正确的值。
ans.Add(new ListItem("option 1", "y"));
ans.Add(new ListItem("option 2", "n"));
ans.Add(new ListItem("option 3", "n"));
ans.Add(new ListItem("option 4", "n"));
ans.Add(new ListItem("option 5", "n"));