日期:2014-05-18  浏览次数:20433 次

高手,请你再看一眼。(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(); 
}