我正在开发一个基于网络的测验系统。
我有代码生成一个 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();
}
}
此代码生成的内容很好 - 出现测验问题,并且单选按钮列表按预期呈现。
当我有一个单独的按钮单击事件时,有些奇怪。用户选择他们的答案后,我想做一个回发并循环遍历表中的行,从每行第二个单元格的单选按钮列表中提取答案。我开始走这条路:
foreach (TableRow tr in tblQuiz.Rows)
{
TableCell tc = tr.Cells[1];
RadioButtonList rbl = (RadioButtonList) tc.Controls[1];
}
问题是当第二个按钮被点击(发布答案)时,表格没有行。为什么会这样,我该如何纠正?