我正在创建一个应用程序,从数据库中提取不同类型的调查问题。 我实施的第一种是一系列问题,每个问题都有四个单选按钮可供选择。
我创建单选按钮列表并动态标记的代码是
protected void ProcessData(DataTable question, DataTable answers)
{
int i = 0;
foreach (DataRow row in question.Rows)
{
HtmlGenericControl rowDiv = new HtmlGenericControl("div");
rowDiv.Attributes["class"] = "classRowDiv";
panel1.Controls.Add(rowDiv);
HtmlGenericControl questionDiv = new HtmlGenericControl("div");
questionDiv.Attributes["class"] = "classQuestionDiv";
questionDiv.ID = "questionDiv" + i.ToString();
rowDiv.Controls.Add(questionDiv);
Label questionLabel = new Label();
questionLabel.Attributes["class"] = "classQuestionLabelDiv";
if (row[2].ToString() == "Radio button")
{
questionLabel.Text = row[3].ToString();
rowDiv.Controls.Add(questionLabel);
HtmlGenericControl radioDiv = new HtmlGenericControl("div");
radioDiv.Attributes["class"] = "classRadioDiv";
radioDiv.ID = "radioDiv" + i.ToString();
rowDiv.Controls.Add(radioDiv);
RadioButtonList rbl = new RadioButtonList();
rbl.ID = "List" + i.ToString();
radioDiv.Controls.Add(rbl);
rbl.RepeatDirection = RepeatDirection.Horizontal;
Label lbl = new Label();
lbl.Text = "<hr />";
panel1.Controls.Add(lbl);
DataRow rowA;
for (int j = 0; j < 4; j++ )
{
rowA = answers.Rows[j];
ListItem button = new ListItem(rowA[2].ToString(), j.ToString());
button.Attributes["class"] = "radioStyle";
rbl.Items.Add(button);
}
i++;
}
}
}
我遇到的问题实际上是获取按钮的选定值。我从阅读中了解到,在回发后必须使用相同的ID重新加载动态创建的控件,但我不完全理解如何实现这一点,因为创建的单选按钮的数量取决于数据库的结果集