取出id时给Session["ID"]定义一个什么类型的变量 Session["ID"] = myds1.Tables[0].Rows[0]["ID"];
取出时的代码如下请高手们看看哪里错了
case 3:
                DataTable dt;
                if (Session["id"] == null)
                {
                    dt = new DataTable();
                }
                else
                {
                    dt = (DataTable)Session["id"];                }                DataRow[] row1 = dt.AsEnumerable().ToArray();                //计算单选题成
                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;
交卷后系统提示异常详细信息: System.InvalidCastException: 无法将类型为“System.Int64”的对象强制转换为类型“System.Data.DataTable”。红色代码部分提示错误

解决方案 »

  1.   

    dt = (DataTable)Session["id"]你的Session["id"]是一个System.Int64类型的,不是你想要的DataTable类型,DataTable和int64之间是无法强制类型转换的
      

  2.   

    Session["ID"] = myds1.Tables[0].Rows[0]["ID"];
    你这里赋值的时候 得看myds1.Tables[0].Rows[0]["ID"]是什么类型,应该是个int64的,不是datatable
      

  3.   

    System.Int64类型怎样写帮帮我好吗?
      

  4.   

    DataTable dt;
      if (Session["id"] == null)
      {
      dt = new DataTable();
      }
      else
      {
      dt = (DataTable)Session["id"]; }
    你这里想让Session["id"]转换为DataTable,是不可能的,因为Session["id"]是int64类型的,就是说你可以
    int64 id=Session["id"];
      

  5.   

    或者你可以前面的页面Session["ID"] = myds1.Tables[0];
    这里你就可以dt = (DataTable)Session["id"];了
      

  6.   

    参考http://topic.csdn.net/t/20060213/09/4552352.html
      

  7.   

    你搞错了,你看看上面的Session["ID"] = myds1.Tables[0].Rows[0]["ID"];赋值是上面类型的。而你在下面则把Session["ID"] 当作DataTable了。。肯定不行了
      

  8.   

    老师谢谢您回复。这一条语句怎样改Int64[] row1 = dt.AsEnumerable().ToArray();提示编译器错误消息: CS1928: “long”不包含“AsEnumerable”的定义,并且最佳扩展方法重载“System.Data.DataTableExtensions.AsEnumerable(System.Data.DataTable)”的某些参数无效
      

  9.   

    谢谢您回复,把Session["ID"] 写成什么类型?
      

  10.   

    老师谢谢您回复,还是提示:异常详细信息: System.InvalidCastException: 无法将类型为“System.Int64”的对象强制转换为类型“System.Data.DataTable”。