我正在开发测验项目。在DetailsView中,我想显示问题和答案。
答案的数量因问题而异。示例
1 ) C# Support
(i) Generics
(ii) LINQ
(iii)EntLib
2 ) Find the odd one
(i) DB2
(ii) Oracle
(iii)MS-Access
(iv) Sql Server
(v) Javascript
所以我无法修复单选按钮的数量。有些问题可能有多个答案。所以我需要显示复选框而不是单选按钮。
我的问题是如何动态生成单选按钮或复选框?
答案 0 :(得分:2)
为每个问题创建一个RadioButtonList或CheckBoxList,并使用其Items集合添加答案。
C#中非常简单的例子:
class Question
{
public string QuestionText;
public List<string> Answers;
}
protected void AddQuestionsToContainer(Control container, List<Question> questions)
{
foreach (Question q in questions)
{
var qt = new Label();
qt.Text = q.QuestionText;
container.Controls.Add(qt);
var rbl = new RadioButtonList();
foreach (string answer in q.Answers)
{
rbl.Items.Add(new ListItem(answer));
}
container.Controls.Add(rbl);
}
}
答案 1 :(得分:1)
我认为你的问题更具体地说是如何确定哪个测验问题有多个答案。
如果我是正确的,你需要在DB中的表中有一个额外的列isMultipleAnswers BIT
(或者你需要为每个问题设置一个标志来源),并处理一个事件。 DetailView与DataBinding一样,检查此字段的值,基于添加RadioButtonList或CheckBoxList。
希望这有帮助!
顺便说一下,你为什么不使用Repeater?