高手,请你再看一眼。(DataGrid使用)
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlCommand cmd=new SqlCommand();
cmd.Connection=new SqlConnection("data source=127.0.0.1;database=bxb;uid=sa;pwd=sa;");
cmd.CommandText="delete cdate where c_id=@c_id";
SqlParameter prmid=new SqlParameter("@c_id",SqlDbType.Int);
prmid.Direction=ParameterDirection.Input;
cmd.Parameters.Add(prmid);
prmid.Value=e.Item.Cells[1].Text;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
LoadData();
}
异常详细信息: System.FormatException: 输入字符串的格式不正确。
源错误:
行 84: prmid.Value=e.Item.Cells[1].Text;
行 85: cmd.Connection.Open();
--->>行 86: cmd.ExecuteNonQuery();
行 87: cmd.Connection.Close();
行 88: cmd.Connection.Dispose();
错误指向行86
请问怎么修改?
------解决方案--------------------prmid.Value=e.Item.Rows[e.rowindex].Cells[1].Text;
这样试试看!
------解决方案--------------------把你要按删除的条件放在dataKeys里面.比如说表ID.
然后:string id = GridView1.DataKeys[e.RowIndex].Value.ToString();
prmid.Value=int.Parse(id);
试试看,应该没有问题.
------解决方案--------------------cmd.CommandText="delete cdate where c_id=@c_id";
上句的SQL语句写错:
应为:
cmd.CommandText="delete from cdate where c_id=@c_id";
------解决方案--------------------你不可以看下别人现成的代码吗? 对照一下就知道了。。何必去苦苦找错呢。再说了。你这么点代码。别人很难帮到你的。
------解决方案--------------------表中的数据类型都是varchar型
--------------------------
SqlParameter prmid=new SqlParameter("@c_id",SqlDbType.Int);
这个怎么就是 INT????
------解决方案--------------------cmd.CommandText="delete from cdate where c_id=@c_id";
prmid.Value=int.Parse(e.Item.Cells[1].Text);
------解决方案--------------------SqlParameter prmid=new SqlParameter("@c_id",SqlDbType.Int);
你表里的数据类型为varchar,而你这里的参数设置的类型为Int,你改成SqlDbType.Varchar看看
------解决方案--------------------C# code
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("data source=127.0.0.1;database=bxb;uid=sa;pwd=sa;");
cmd.CommandText = "delete cdate where c_id=@c_id";
SqlParameter prmid=new SqlParameter("@c_id",SqlDbType.VarChar);
prmid.Direction=ParameterDirection.Input;
cmd.Parameters.Add(prmid);
prmid.Value=e.Item.Cells[1].Text;
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
cmd.Connection.Dispose();
cmd.Dispose();
LoadData();
}