2017-02-10 63 views
0

我有一个单选按钮列表,位于一个asp中继器内。它看起来像这样:使用数据源获取单选按钮列表响应asp.net

<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。

任何帮助将不胜感激。

回答

1

我认为你在每个PostBack上重新绑定Repeater。您需要将其包装在IsPostBack检查中。

if (!Page.IsPostBack) 
{ 
    surveyRepeater.DataSource = Common.LoadFromDB(); 
    surveyRepeater.DataBind(); 
} 

如果您没有重新创建RadioButtonLists并且他们的选择丢失。

+0

是的,就是这样。哦,我的上帝寻找那3个小时:P非常感谢 –