无法将“System.String”类型的对象强制转换为“System.Data.DataTable”类型

时间:2014-09-07 13:07:52

标签: c# asp.net gridview datatable

我正在尝试通过session中的GridView更新我的行。只有GridView中的行更新操作才会引发服务器错误。我项目中的其他操作运行正常。当我添加以下代码来更新索引时,它会引发服务器错误。请指导。

  

服务器错误 -

     

' /'中的服务器错误应用

     

无法转换类型为' System.String'的对象输入' System.Data.DataTable'。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.InvalidCastException:无法转换类型为' System.String'的对象输入' System.Data.DataTable'。

     

来源错误:

Line 107:            con.Open();
Line 108:
Line 109:            DataTable dt = (DataTable)Session["name"];
Line 110:
Line 111:            //Update the values.

我的aspx.cs代码用于更新gridview中的行:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    SqlConnection con = new SqlConnection(strConnString);
    con.Open();

    DataTable dt = (DataTable)Session["name"];

    //Update the values.
    GridViewRow row = GridView1.Rows[e.RowIndex];
    //int id = Convert.ToInt32(Label.[e.RowIndex].Values["id"].ToString());
    dt.Rows[row.DataItemIndex]["name"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["role"] = ((TextBox)(row.Cells[2].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["gender"] = ((TextBox)(row.Cells[3].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["exp"] = ((TextBox)(row.Cells[4].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["join"] = ((TextBox)(row.Cells[5].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["report"] = ((TextBox)(row.Cells[6].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["email"] = ((TextBox)(row.Cells[7].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["mobile"] = ((TextBox)(row.Cells[8].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["birth"] = ((TextBox)(row.Cells[9].Controls[0])).Text;
    dt.Rows[row.DataItemIndex]["address"] = ((TextBox)(row.Cells[10].Controls[0])).Text;

    SqlCommand com = new SqlCommand("update_employee", con);
    com.CommandType = CommandType.StoredProcedure;
    com.Connection = con;
    com.Parameters.Add("@id", SqlDbType.Int).Value = id;
    com.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = name;
    com.Parameters.Add("@address", SqlDbType.VarChar, 50).Value = address;
    com.Parameters.Add("@email", SqlDbType.VarChar, 50).Value = email;
    com.Parameters.Add("@mobile", SqlDbType.VarChar, 50).Value = mobile;
    com.Parameters.Add("@gender", SqlDbType.VarChar, 50).Value = gender;
    com.Parameters.Add("@role", SqlDbType.VarChar, 50).Value = role;
    com.Parameters.Add("@birth", SqlDbType.VarChar, 50).Value = birth;
    com.Parameters.Add("@join", SqlDbType.VarChar, 50).Value = join;
    com.Parameters.Add("@exp", SqlDbType.VarChar, 50).Value = exp;
    com.Parameters.Add("@report", SqlDbType.VarChar, 50).Value = report;
    com.ExecuteNonQuery();
    com.Dispose();
    con.Close();
    GridView1.EditIndex = -1;
    bindgrid();
}

0 个答案:

没有答案