我有一个asp转发器内的单选按钮列表。它看起来像这样:
<asp:Repeater runat="server" ID="surveyRepeater">
<ItemTemplate>
<h3><%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).questionNum%>
. <%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).question%>
</h3>
<asp:RadioButtonList ID="surveyRadioList"
DataTextField="questionText"
DataValueField="valueOfQuestion" runat="server"
DataSource="<%#((Half_Blue.Survey_files.survey_classes.surveyQuestion)Container.DataItem).answerOptions %>"
RepeatDirection="Vertical">
</asp:RadioButtonList>
</ItemTemplate>
</asp:Repeater>
这会正确显示单选按钮列表,但我无法弄清楚如何在后面的代码中获取响应。
我可以通过以下方式获取单选按钮列表:
foreach (RepeaterItem item in surveyRepeater.Items)
{
// Checking the item is a data item
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
var rdbList = item.FindControl("surveyRadioList") as RadioButtonList;
if (rdbList != null)
{
retList.Add(rdbList.SelectedValue);
}
}
}
然而,即使它找到了所有8个单选按钮列表,所选的值也总是一个空的“”字符串。无论我选择哪个选项,所选索引总是-1。
非常感谢任何帮助。
答案 0 :(得分:1)
我认为你在每个PostBack上重新绑定Repeater
。您需要将其包含在IsPostBack
支票内。
if (!Page.IsPostBack)
{
surveyRepeater.DataSource = Common.LoadFromDB();
surveyRepeater.DataBind();
}
如果不重新创建RadioButtonLists并且他们的选择丢失了。