データリストを含むasp.netがあり、そのitemtemplate内にradiobuttonlistが含まれています
これが私の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;
}
}
}