私は、Web ベースのクイズ システムに取り組んでいます。
質問のリストとクイズの質問の回答を示すラジオボタン リストを含む ASP.NET テーブルを生成するコードがあります。
//Retrieve questions and answers - build the actual quiz
DataTable dtQuiz = qr.GetQuizQuestions(QuizID);
if (dtQuiz != null && dtQuiz.Rows.Count >= 1)
{
foreach (DataRow row in dtQuiz.Rows)
{
TableRow tr = new TableRow();
TableCell tcQuestionNum = new TableCell();
TableCell tcQuestion = new TableCell();
tcQuestionNum.VerticalAlign = VerticalAlign.Top;
tcQuestionNum.Controls.Add(new LiteralControl(row["QuestionNum"].ToString()));
tcQuestion.Controls.Add(new LiteralControl(row["Question"].ToString()));
RadioButtonList rblAnswers = qr.GetAnswers(QuizID, Int32.Parse(row["QuestionNum"].ToString()));
tcQuestion.Controls.Add(rblAnswers);
tr.Cells.Add(tcQuestionNum);
tr.Cells.Add(tcQuestion);
tblQuiz.Rows.Add(tr);
tblQuiz.DataBind();
}
}
このコードは問題なくコンテンツを生成します。クイズの質問が表示され、ラジオボタン リストが期待どおりにレンダリングされます。
別のボタン クリック イベントがあると、何かおかしいことがあります。ユーザーが回答を選択した後、ポストバックを実行してテーブル内の行をループし、各行の 2 番目のセルにあるラジオボタン リストから回答を取得します。私はこの道を歩み始めました:
foreach (TableRow tr in tblQuiz.Rows)
{
TableCell tc = tr.Cells[1];
RadioButtonList rbl = (RadioButtonList) tc.Controls[1];
}
問題は、(回答を投稿するために) 2 番目のボタンをクリックしたときに、テーブルに行がないことです。これはなぜですか?どうすれば修正できますか?