下面是《asp.net项目开发全程实录》第七章在线考试从数据库中选择单选题和核对单选题答案。这样选择的试题在客户端试题的排列顺序是一样的,能正确核对答案计算成绩,相邻客户端很容易相互操答案。我想把它改成随机生成试题,我用'order by newid()代替'order by id desc能随机生成试题了,客户端之间的试题排列顺序也不一样了。可是不能正确核对答案计算成绩。也就是说随机生成的题号与核对答案的题号不一致。因刚入门非常菜,根据下面代码请前辈具体地写出怎样修改。再送50分表示感谢。
//从数据库中选择单选题
            case 1:
                SqlDataAdapter myadapter1 = new SqlDataAdapter("select * "
                    + "from tb_Questions where que_type='单选题'and que_lessonid='"
                    + dd1 + "'and que_taotiid='" + dd2 + "'order by id desc", con);
                DataSet myds1 = new DataSet();
                myadapter1.Fill(myds1);
                DataList1.DataSource = myds1;
                DataList1.DataBind();
                //生成单选题题号
                for (int tID1 = 1; tID1 <= DataList1.Items.Count; tID1++)
                {
                    Label lblSelect = (Label)DataList1.Items[tID1 - 1].FindControl("Label2");
                    lblSelect.Text = tID1.ToString() + "、";
                }
                break;
//核对单选题答案
            case 3:
                SqlDataAdapter myadapter3 = new SqlDataAdapter("select id,que_answer"
                    + " from tb_Questions where que_type='单选题'and que_lessonid="
                    + dd1 + " and que_taotiid=" + dd2 + " order by id desc", con);
                DataSet myds3 = new DataSet();
                myadapter3.Fill(myds3);
                DataRow[] row1 = myds3.Tables[0].Select();
                //计算单选题成
                foreach (DataRow answer1 in row1)
                {
                    int_row1 += 1;
                    if (int_row1<= 3)
                    {
                        RadioButtonList rbl = (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;