问题描述
下面是《asp.net项目开发全程实录》第七章在线考试从数据库中选择单选题和核对单选题答案。这样选择的试题在客户端试题的排列顺序是一样的,能正确核对答案计算成绩,相邻客户端很容易相互操答案。我想把它改成随机生成试题,我用'orderbynewid()代替'orderbyiddesc能随机生成试题了,客户端之间的试题排列顺序也不一样了。可是不能正确核对答案计算成绩。也就是说随机生成的题号与核对答案的题号不一致。因刚入门非常菜,根据下面代码请前辈具体地写出怎样修改。再送50分表示感谢。//从数据库中选择单选题case1:SqlDataAdaptermyadapter1=newSqlDataAdapter("select*"+"fromtb_Questionswhereque_type='单选题'andque_lessonid='"+dd1+"'andque_taotiid='"+dd2+"'orderbyiddesc",con);DataSetmyds1=newDataSet();myadapter1.Fill(myds1);DataList1.DataSource=myds1;DataList1.DataBind();//生成单选题题号for(inttID1=1;tID1<=DataList1.Items.Count;tID1++){LabellblSelect=(Label)DataList1.Items[tID1-1].FindControl("Label2");lblSelect.Text=tID1.ToString()+"、";}break;//核对单选题答案case3:SqlDataAdaptermyadapter3=newSqlDataAdapter("selectid,que_answer"+"fromtb_Questionswhereque_type='单选题'andque_lessonid="+dd1+"andque_taotiid="+dd2+"orderbyiddesc",con);DataSetmyds3=newDataSet();myadapter3.Fill(myds3);DataRow[]row1=myds3.Tables[0].Select();//计算单选题成foreach(DataRowanswer1inrow1){int_row1+=1;if(int_row1<=3){RadioButtonListrbl=(RadioButtonList)(DataList1.Items[int_row1-1].FindControl("RadioButtonList1"));if(rbl.SelectedValue==""){this.lblSel.Text="0";}else{if(answer1["que_answer"].ToString().Trim()==rbl.SelectedValue.ToString().Trim()){int_row1Point+=40/DataList1.Items.Count;this.lblSel.Text=int_row1Point.ToString();}}}}break;
解决方案
解决方案二:
小弟这里先谢过了!
解决方案三:
没遇到类似问题,帮顶!
解决方案四:
自己顶个1
解决方案五:
不知道你数据表是怎么建的;你可以把学生的答案与标准答案,通过题目的ID号,做联合查询。把学生的答案和标准答案,都查出来。然后Foreach循环每一行,看两个答案是否相同!