2017-02-10 62 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非常感謝 –