2013-07-09 33 views
0

我有一個包含一個DataList和它的ItemTemplate裏面包含一個單選按鈕列表asp.net DataList控件總是不SELECTED

這裏一個asp.net是我的ASPX代碼:

<asp:DataList ID="dtlQuestions" runat="server" RepeatDirection="Vertical" DataKeyField="ID" OnItemDataBound="dtlQuestions_ItemDataBound"> 
    <ItemTemplate> 
     <asp:Label ID="q" runat="server" Text='<%# Eval("Question") %>'></asp:Label> 
     <asp:RadioButtonList ID="dtlAnswers" runat="server" ValidationGroup='Bla' RepeatDirection="Horizontal" RepeatColumns="5" CssClass="radioButtonList"> 
     </asp:RadioButtonList> 
    </ItemTemplate> 
</asp:DataList> 

在後面的代碼中,我有一個「Questons」列表,其中每個項目都包含項目列表。 我將問題綁定到Datalist,問題中的每個答案綁定到radioButtonList。

下面是C#代碼:

protected void dtlQuestions_ItemDataBound(object sender, DataListItemEventArgs e) 
{ 
    SurveyQuestion drv = e.Item.DataItem as SurveyQuestion; 
    RadioButtonList RadioButtonList1 = (RadioButtonList)e.Item.FindControl("dtlAnswers"); 
    foreach (QuestionAnswer a in drv.QuestionAnswers) 
    { 
     ListItem i = new ListItem(); 
     i.Text = a.Answer; 
     i.Value = a.Answer; 
     RadioButtonList1.Items.Add(i); 
    } 
} 

現在我的問題是,當點擊一個按鈕我要回去和閱讀每一個單選按鈕,看看它是否被選中與否,我能夠循環通過單選按鈕但所有都顯示不選。

這裏是按鈕提交點擊

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    DataList dtlQuestions = Page.FindControl("dtlQuestions") as DataList; 

    foreach (DataListItem question in dtlQuestions.Items) 
    { 
     RadioButtonList rdList = question.FindControl("dtlAnswers") as RadioButtonList; 

     foreach (ListItem answer in rdList.Items) 
     { 
      bool isSelected = answer.Selected; 
     } 
    } 
} 
+0

你能說明你實際上是如何將數據綁定到DataList的嗎? –

+0

Ohhhh我發現了。在Page_Loadi上向DataList的DataSource添加了一個questons列表。 我的問題是我沒有添加一個if(!Page.IsPostBack)到那個部分,所以每次按鈕被點擊時它重新綁定數據並丟失我選擇的值。 :) – Nisho

+0

:)這可能是asp.net中最常見的問題 –

回答

0

天上我發現了這件事。在Page_Loadi上向DataList的DataSource添加了一個questons列表。我的問題是我沒有添加一個if(!Page.IsPostBack)到那個部分,所以每次單擊按鈕時都會重新綁定數據並丟失我選定的值。 :)

0

首先感謝分享這個問題。這幫助我開發&來解決如何實現答案的問題。我嘗試嵌套中繼器,但問題單選按鈕組。這篇文章對我很有幫助。所以執行後要面對保存問題。以上保存代碼無法正常工作。我喜歡解決方案,並與asp.net開發人員社區分享。謝謝

count = 0; 
     if (dtlQuestions.Items.Count > 0) 
     { 
    foreach (DataListItem li in dtlQuestions.Items) 
      {  
       RadioButtonList rdList = li.FindControl("dtlAnswers") as RadioButtonList; 
       HiddenField hnQuestionsid = (HiddenField)li.FindControl("hnQuestionsid"); 
       foreach (ListItem answer in rdList.Items) 
       { 
     bool isSelected = answer.Selected; if (isSelected){ int slval = Convert.ToInt32(answer.Value); InsertSurveyData(Convert.ToInt32(hnSurveyid.Value), Convert.ToInt32(hnQuestionsid.Value), Convert.ToInt32(slval));}}}}