在线考试系统的考试页面,我有个题目表:id,Suject,A,B,C,D,answer,isManyCheck 其中isManyCheck是判断是否是多选题目,我想请问当我随机抽取题目出来的时候,如何根据isManyCheck动态生成RedioButtonList或CheckBoxList,并将题目绑定在上面?
解决方案 »
- 请教在gridview里面的imagebutton按钮左击后弹出下载对话框(既实现下载功能)
- 为什么邮件附件的文件名是路径字符串?
- checkbox问题!!!!!!!!!!!!
- 如何用程序取消某个参数?
- 如何使用Javascript控制控件的属性,希望大虾们帮忙!!!
- 虽然要代码是可耻!但我真的不会!数据联接响应过程问题.大家帮帮忙
- 如何再asp.net中定义一个全局得类,再各个页面都可以实例化,比如说数据库连接类!
- 求救!!!
- 控制浏览器窗口
- datagrid数据导入到excel中的问题
- 怎么在网页中跳出摄像头
- 在TreeView控件的父节点没有设置NavigateUrl,子节点设置了NavigateUrl,没写参数,参数在方法TreeNodeDataBound中设置,可是运行中该方法没有执行??
单选Radio 多选CheckBox 答案编号 答案内容
------------------------
Radio CheckBox A 答案A
Radio CheckBox B 答案B
Radio CheckBox C 答案C
Radio CheckBox D 答案D在页面Page_Load的时候,判断IsManyCheck字段,如果是多选,则隐藏掉Radio列;反之,如果是单选,则隐藏掉CheckBox列
else{}
{
myradio = new RedioButtonList();
绑定单选题目。
}
else
{
mycheck = new CheckBoxList();
绑定多选题目。
}
如果不是,就把相对应的容器(panel或groupBox)隐藏掉..
public Control GetControl(DataRow dr)
{
如果isManyCheck==1(假如多选,相关逻辑省略)
return new CheckBoxList()
否则
return new RedioButtonList()...
}剩下的工作就是如何组织容器了
int NoRubric = 1;
//生成外table
Table outSideTable = new Table();
outSideTable.CssClass = "titleColor";
outSideTable.Width = Unit.Parse("100%");
DataTable ExaningRubricList = bllExamingRubric.GetPaperRubric(testPaperId);//读取试卷题目信息 int sumNum = 0;
//生成table来装试题
for (int i = 0; i < (ExaningRubricList.Rows.Count + 4); i++)
{
TableRow row = new TableRow();
TableCell td = new TableCell();
td.Width = Unit.Parse("100%");
row.Cells.Add(td);
outSideTable.Rows.Add(row);
//计算题目分值
if (i < ExaningRubricList.Rows.Count)
{
sumNum += int.Parse(ExaningRubricList.Rows[i]["Rubric_Number"].ToString());
}
}
lblSumNumber.Text = sumNum.ToString(); //获取该试卷里的全部单选题
DataRow[] rblRubrics = ExaningRubricList.Select(String.Format("Rubric_Sort = 2"));//你需要改的地方,修改判断条件String.Format("Rubric_Sort = 2")就可以了 if (rblRubrics.Length > 0)
{
Label lblRblRubricTitle = new Label();
lblRblRubricTitle.CssClass = "fontSize";
lblRblRubricTitle.Text = "<b>一、单选题:</b>";
outSideTable.Rows[(NoRubric - 1 + titleNum)].Cells[0].Controls.Add(lblRblRubricTitle);
}
//循环生成控件并显示
foreach (DataRow rblRubric in rblRubrics)
{
//设置控件添加的位置
outSideTable.Rows[((NoRubric - 1 + titleNum) + titleNum)].Cells[0].Controls.Add(setTable(rblRubric, 2, NoRubric));// setTable方法就不发了,你自己应该写的出来
NoRubric++;
} //生成多选题
DataRow[] cblRubrics = ExaningRubricList.Select(String.Format("Rubric_Sort = 3"));
if (cblRubrics.Length > 0)
{
Label lblCblRubricTitle = new Label();
lblCblRubricTitle.CssClass = "fontSize";
lblCblRubricTitle.Text = "<b>二、多选题:</b>";
outSideTable.Rows[(NoRubric - 1 + titleNum)].Cells[0].Controls.Add(lblCblRubricTitle);
} foreach (DataRow cblRubric in cblRubrics)
{
//设置试题显示位置
outSideTable.Rows[(NoRubric - 1 + titleNum)].Cells[0].Controls.Add(setTable(cblRubric, 3, NoRubric));
NoRubric++;
}