动态地将具有可变长度的checkboxlist或radiobuttonlist添加到gridview

时间:2013-04-30 17:35:25

标签: c# asp.net gridview checkboxlist radiobuttonlist

在我开发的在线测试应用程序中,我今天偶然发现了一个关于可变长度radiobuttonlist / checkboxlist选项的新可能性。在一般/普通系统中,我们只有4个选项(即使我觉得非常严格和不完整),我的客户要求我创建一个测试,显示给出4或5个选项(多个或单个选择也称为收音机或复选框) )基于数据库录入。

现在DB不是问题,除了如何根据gridview中的给定数据变化控件长度或显示特定控件这一事实外,一切都很好。例如,我们的gridview有一个Lable for Question和Question No.以及两个控件checkboxlist和radiobuttonlist,供用户填写选项,所以总之他希望:

单选按钮列表:

  • 如果多重选项的db值为“false”且总选项为4
  • ,则显示4个选项
  • 如果多重选项的db值为“false”且总选项为5
  • ,则显示5个选项

复选框清单:

  • 如果多重选项的db值为“true”且总选项为4
  • ,则显示4个选项
  • 如果多重选项的db值为“true”且总选项为5
  • ,则显示5个选项

所以这是一般的想法,我无法弄清楚如何在我的gridview中查看这些内容, 哪个“需要将这些数据显示为一张OMR表”,我甚至不会打扰你们,如果它是一个普通的测试,下一个问题按钮,我们一次只显示一个问题或一个简单的静态4选项问题

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式达到此要求。

  1. 您可以使用嵌套控件(gridview +复选框列表)
  2. 首先为问题创建gridview控件
  3. 在该gridview内,创建一个模板字段&删除复选框列表控件
  4. 现在,您有一个gridview,其中包含每行/问题的复选框列表(问题的一部分已解决)
  5. 您应该拥有TblQuestions&的数据库表格。 TblAnswers respectivley
  6. 现在只需将数据源(SQLDataSource,ObjectDataSource)放入我们之前创建的模板字段中。指定答案SQL查询(select * from TblAnswers where questionId=@questionId)&为数据源上的问题ID创建一个select参数
  7. 在gridview的RowDataBoundEvent内,您可以使用FindControl查找checkboxList&数据源控件
  8. 然后,您可以使用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.