各位高手你们好:下面是明日科技在线考试系统,我想改成随机生成试题,随机生成的试题顺序和计算成绩的顺序一致。我做了下面3处改动,运行结果能打开考试页面做题,但是点击交卷按钮时出错提示:未将对象引用设置到对象的实例.这一行错行 64: DataRow[]row1 = dt.Select("id=" + id);请高手指点一下上面的改动对不对,下面怎样改。
1:前台Aspx中加了
<tr>
<td colspan="2">
<asp:HiddenField ID="hidGenId1" runat="server" Value='<%#DataBinder.Eval(Container.DataItem, "id")%>' />
</tr>
2:后台
btnSubmit_Click下面加了
for (int i = 0; i < DataList1.Items.Count; i++)
{
string id=((HiddenField)(DataList1.Items[i].FindControl("hidGenID1"))).Value;
}
3://核对单选题答案中加了
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 newid()", con);
DataSet myds3 = new DataSet();
myadapter3.Fill(myds3);
string id = ((HiddenField)(DataList1.Items[i].FindControl("hidGenID1"))).Value;
DataTable dt = (DataTable)ViewState["dt"];
DataRow[] row1 = dt.Select("id=" + id);
//计算单选题成
1:前台Aspx中加了
<tr>
<td colspan="2">
<asp:HiddenField ID="hidGenId1" runat="server" Value='<%#DataBinder.Eval(Container.DataItem, "id")%>' />
</tr>
2:后台
btnSubmit_Click下面加了
for (int i = 0; i < DataList1.Items.Count; i++)
{
string id=((HiddenField)(DataList1.Items[i].FindControl("hidGenID1"))).Value;
}
3://核对单选题答案中加了
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 newid()", con);
DataSet myds3 = new DataSet();
myadapter3.Fill(myds3);
string id = ((HiddenField)(DataList1.Items[i].FindControl("hidGenID1"))).Value;
DataTable dt = (DataTable)ViewState["dt"];
DataRow[] row1 = dt.Select("id=" + id);
//计算单选题成
{
int_row1 += 1;
if (int_row1<= 10)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[int_row1 - 1].FindControl("RadioButtonList1"));
if (rbl.SelectedValue == "")
{
this.lblSel.Text = int_row1Point.ToString();
}
else
{
float ti = DataList1.Items.Count;
if (answer1["que_answer"].ToString().Trim() == rbl.SelectedValue.ToString().Trim())
{
int_row1Point += 50 / ti;
this.lblSel.Text = int_row1Point.ToString();
}
}
}
}
break;foreach (DataRow answer1 in row1)
{
int_row1 += 1;
if (int_row1<= 10)
{
RadioButtonList rbl = (RadioButtonList)(DataList1.Items[int_row1 - 1].FindControl("RadioButtonList1"));
if (rbl.SelectedValue == "")
{
this.lblSel.Text = int_row1Point.ToString();
}
else
{
float ti = DataList1.Items.Count;
if (answer1["que_answer"].ToString().Trim() == rbl.SelectedValue.ToString().Trim())
{
int_row1Point += 50 / ti;
this.lblSel.Text = int_row1Point.ToString();
}
}
}
}
break;
{
DataRow[] row1 = dt.Select("id=" + id);
}
if(dt.Rows.Count==0&dt==null)
{
return;
}else{
if(id==null)
{
提示错误信息!
}else{
DataRow[] row1 = dt.Select("id=" + id); }
}
写错了点东西应该是:if(dt.Rows.Count==0||dt==null)
{
return;
}else{
if(id==null)
{
提示错误信息!
}else{
DataRow[] row1 = dt.Select("id=" + id); }
}