解决方案 »

  1.   

    根据具体情况,后台给个方向,让管理员添加试题的时候选择选择类型:单选,多选(给这栏设置个字段)前台试题调用的时候,根据选择类型,在后台设置控件,服务器控件实现起来太麻烦,建议使用ajax的方式
    追加服务器控件,实现多选和单选下边是个例子,和你说的差不多
        /// <summary>
        /// 创建控件
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        private string createControl(Model.ProductAttribute item)
        {
            string input = "";
            if (item.OptionalType.Value == 0)
            {
                if (item.EntryType.Value == 0)  /*input*/
                {
                    input += string.Format("<div><input type=\"text\" class=\"ipt1\" name=\"attr_[{0}]\"/></div>", item.ID);
                }
                else if (item.EntryType.Value == 1)/*select*/
                {
                    input += string.Format("<div><select name=\"attr_[{0}]\">", item.ID);
                    input += "<option value=\"请选择\">请选择</option>";
                    foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
                    {
                        if (!string.IsNullOrEmpty(option))
                        {
                            input += "<option value=\"" + option + "\">" + option + "</option>";
                        }
                    }
                    input += "</select></div>";
                }
                else if (item.EntryType.Value == 2)/*textarea*/
                {
                    input += string.Format("<div><textarea class=\"ipt3\" name=\"attr_[{0}]\" cols=\"35\" rows=\"4\"></textarea></div>", item.ID);
                }
            }
            else if (item.OptionalType.Value == 1 || item.OptionalType.Value == 2)
            {
                if (item.EntryType.Value == 0)
                {
                    input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a>&nbsp;<input type=\"text\" class=\"ipt1\" name=\"attr_[{0}]_1\"/>", item.ID);
                    input += string.Format("&nbsp;&nbsp;属性价格&nbsp;<input class=\"ipt1\" style=\"width:50px;\" type=\"text\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
                }
                if (item.EntryType.Value == 1)
                {
                    input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a>&nbsp;<select name=\"attr_[{0}]_1\">", item.ID);
                    input += "<option value=\"请选择\">请选择</option>";
                    foreach (string option in Regex.Split(item.OptionalValueList, "\r\n"))
                    {
                        if (!string.IsNullOrEmpty(option))
                        {
                            input += "<option value=\"" + option + "\">" + option + "</option>";
                        }
                    }
                    input += string.Format("</select>&nbsp;&nbsp;属性价格&nbsp;<input class=\"ipt1\" style=\"width:50px;\" type=\"text\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
                }
                else if (item.EntryType.Value == 2)
                {
                    input += string.Format("<input name=\"hid_attr_{0}\" type=\"hidden\" value=\"1\" /><div><a href=\"javascript:;\" onclick=\"addControl(this,{0});\">[+]</a>&nbsp;<textarea class=\"ipt3\" name=\"attr_[{0}]_1\" cols=\"35\" rows=\"4\"></textarea>&nbsp;&nbsp;属性价格&nbsp;<input style=\"width:50px;\" type=\"text\" class=\"ipt1\" name=\"attr_price_[{0}]_1\"/></div>", item.ID);
                }
            }        return input;
        }
      

  2.   

     单选题的显示我可以在repeater控件里用radiobuttonlist控件来绑定题目的选项,多选题(不用checkButtonlist控件,因为和radiobuttonlist控件外观不一样),我怎么来显示多选题呢?
    在后台我每读取一个选项就追加一个radiobutton,这样对我读取用户答案时会不会有麻烦
      

  3.   

    这个问题应该和你数据库设计关系要多一点,如果数据库设计好了,就生成试卷和答题很容易搞定的,外部使用jquery 遍历出所有的答题答案 在把每个题的正确答案放在隐藏与对比一下就ok了.
      

  4.   

    你是纠结客户端与服务器控件的问题吧?那你就把所有的服务器控件都设置成:CheckBoxList通过JS控制实现单选 还是多选
      

  5.   

    在页面上添加一个placeholder、label以及用于提交的button 
    protected void Page_Load(object sender, EventArgs e)
        {
            Label lbl1 = new Label();
            lbl1.ID = "lblQuestion";
            lbl1.Text = "1.Web服务器控件不包括()。";
            ph1.Controls.Add(lbl1);
            RadioButtonList rdbl = new RadioButtonList();
            rdbl.ID = "rdblChoice";
            rdbl.Items.Add(new ListItem("A.Wizard", "A"));
            rdbl.Items.Add(new ListItem("B.input", "B"));
            rdbl.Items.Add(new ListItem("C.Adrotator", "C"));
            rdbl.Items.Add(new ListItem("D.Calender", "D"));
            ph1.Controls.Add(rdbl);
        }