在我开发的在线测试应用程序中,我今天偶然发现了一个关于可变长度radiobuttonlist / checkboxlist选项的新可能性。在一般/普通系统中,我们只有4个选项(即使我觉得非常严格和不完整),我的客户要求我创建一个测试,显示给出4或5个选项(多个或单个选择也称为收音机或复选框) )基于数据库录入。
现在DB不是问题,除了如何根据gridview中的给定数据变化控件长度或显示特定控件这一事实外,一切都很好。例如,我们的gridview有一个Lable for Question和Question No.以及两个控件checkboxlist和radiobuttonlist,供用户填写选项,所以总之他希望:
单选按钮列表:
复选框清单:
所以这是一般的想法,我无法弄清楚如何在我的gridview中查看这些内容, 哪个“需要将这些数据显示为一张OMR表”,我甚至不会打扰你们,如果它是一个普通的测试,下一个问题按钮,我们一次只显示一个问题或一个简单的静态4选项问题
答案 0 :(得分:0)
您可以通过以下方式达到此要求。
TblQuestions
&的数据库表格。 TblAnswers
respectivley select * from TblAnswers where questionId=@questionId)
&为数据源上的问题ID创建一个select参数RowDataBoundEvent
内,您可以使用FindControl
查找checkboxList&数据源控件然后,您可以使用gridview的行Id&将复选框列表与所需答案绑定
protected void yourGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Find your controls
CheckBoxList yourChkBoxList = e.Row.FindControl("yourChkBoxListName") as CheckBoxList;
ObjectDataSource odsTemp=e.Row.FindControl("yourDataSourceName") as ObjectDataSource;
if (odsTemp !=null)
{
odsTemp.SelectParameters[0].DefaultValue = yourGridView.DataKeys[e.Row.RowIndex][0].ToString();
yourGridView.DataBind();
}
}
}
<强>更新强>
You would not use a label control for questions. You would fetch them from database & bind questions to a gridview.