0

在我开发的在线测试应用程序中,我今天偶然发现了一种关于可变长度单选按钮列表/复选框列表选项的新可能性。与一般/通用系统一样,我们只有 4 个选项(即使我觉得非常僵化和不完整),我的客户要求我创建一个测试,显示时提供 4 或 5 个选项(多选或单选,又名单选或复选框) 基于数据库条目。

现在 DB 不是问题,一切都很好,除了如何根据 gridview 中的给定数据改变控件的长度或显示特定的控件。例如,我们的 gridview 有一个用于问题和问题编号的标签以及两个控件 checkboxlist 和 radiobuttonlist 用于用户填写的选项,所以简而言之,他想要:

单选按钮列表:

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

复选框列表:

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

所以这是一般的想法,我不知道如何在我的网格视图中显示这些东西,这是“需要将这些数据显示为 OMR 表”,如果它是正常的,我什至不会打扰你们使用下一个问题按钮进行测试,我们一次只显示一个问题或一个简单的静态 4 选项问题。

4

1 回答 1

0

您可以通过以下方式实现此要求。

  1. 您可以使用嵌套控件(gridview + 复选框列表)
  2. 首先为问题创建一个gridview控件
  3. 在该网格视图中,创建一个模板字段并删除一个复选框列表控件
  4. 现在,您有一个网格视图,每行/问题都有复选框列表(部分问题已解决)
  5. 你应该有一个TblQuestions&TblAnswers的数据库表
  6. 现在只需在我们之前创建的模板字段中放置一个数据源(SQLDataSource,ObjectDataSource)并指定您的答案 SQL 查询(select * from TblAnswers where questionId=@questionId)并为您的数据源上的问题 ID 创建一个选择参数
  7. 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.
    
于 2013-05-02T09:31:05.910 回答