private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string productid=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string productName=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string SupplierID=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string CategoryID=DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
string UnitPrice=DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); SqlConnection con=new SqlConnection();
con.ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["DataConn"];
con.Open();
SqlTransaction Txn;
Txn=con.BeginTransaction();
try
{
SqlCommand SqlCom=new SqlCommand();
SqlCom.Connection=con;
SqlCom.Transaction=Txn;
SqlCom.CommandText="updata products set ProductName='"+productName+"',SupplierID='"+SupplierID+"',CategoryID='"+CategoryID+"',UnitPrice='"+UnitPrice+"' where SupplierId='"+productid+"'";
SqlCom.ExecuteNonQuery();
Txn.Commit();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Txn.Rollback();
}
con.Close();

解决方案 »

  1.   

    加个断点,运行看看,也可以打开sql2000的事件探查器观察有没有执行你的更新语句
      

  2.   

    错误信息是什么呐?  代码没问题,但是建议 finally
    {
      con.Close(); 
    }
      

  3.   

    1.用SqlParameter,而非拼字符串
    2.加断点跟踪调试
      

  4.   

    没有提示信息,就是更新不了。
    大概下面这段我取错了,需要更改下
    string productName=DataGrid1.DataKeys[e.Item.ItemIndex].ToString(); 
    string productName=DataGrid1.Items[0].Cells[1].Text;
    string SupplierID=DataGrid1.Items[0].Cells[2].Text ;
    string CategoryID=DataGrid1.Items[0].Cells[3].Text;
    string UnitPrice=DataGrid1.Items[0].Cells[4].Text;试置了段点还是取不到正确的值。(我第二个字段是productName,依此类推)
      

  5.   

    你可以看一下你的Cell[1].Text里取到的值是什么?
    看是你程序里哪个的值?这样来找错在哪儿...
    你这样发上来,别人无法知道你错在哪儿..
      

  6.   

    谢谢各位,我已经能正确取到值了,但还是updata不成功(记录保持不变),看来还是要我自己在努努力了。