高手啊:
    你们好?
    我用datagrid属性的按钮列做删除事件,编辑,更新、取消,调试成功。运行后,删除行删不了,按“编辑”也是原样。代码如下:请高手帮忙啊
//编辑
private void DataGrid1_EditCommand_1(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex = e.Item.ItemIndex; 
this.BindGrid();
}
//更新
private void DataGrid1_UpdateCommand(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

string upStr="UPDATE WH_xap SET CNo=@CNo,PBItem=@PBItem,PBLot=@PBLot,DamageQty=@DamageQty WHERE WH_xap_id=@WH_xap_id"; SqlCommand upCmd=new SqlCommand(upStr,cn); 
upCmd.Parameters.Add("@WH_xap_id",SqlDbType.SmallInt,2); 
upCmd.Parameters.Add("@CNo",SqlDbType.VarChar,50); 
upCmd.Parameters.Add("@PBItem",SqlDbType.VarChar,1); 
upCmd.Parameters.Add("@PBLot",SqlDbType.VarChar,1); 
//upCmd.Parameters.Add("@DamageQty",SqlDbType.SmallInt,2); 
upCmd.Parameters.Add("@DamageQty",SqlDbType.VarChar,1); 
upCmd.Parameters[0].Value = ((TextBox) e.Item.Cells[2].Controls[0]).Text; 
upCmd.Parameters[1].Value = ((TextBox) e.Item.Cells[3].Controls[0]).Text; 
upCmd.Parameters[2].Value = ((TextBox) e.Item.Cells[4].Controls[0]).Text; 
upCmd.Parameters[3].Value = this.DataGrid1.DataKeys[e.Item.ItemIndex]; try 

cn.Open(); 
upCmd.ExecuteNonQuery(); 
cn.Close(); 
if(!Page.IsStartupScriptRegistered("upAlert")) 

Page.RegisterStartupScript("upAlert",@"<script language='javascript'>alert('更新成功')</script>"); 

this.DataGrid1.EditItemIndex = -1; 
BindGrid(); 

catch(Exception err) 

Response.Write(err.Message); 

finally 

if(cn.State == ConnectionState.Open) 

cn.Close(); 


}
//取消
private void DataGrid1_CancelCommand_1(object source,System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex = -1; 
this.BindGrid();
}//ItemdataBound
//删除
private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
string delStr="DELETE FROM WH_xap WHERE WH_xap_id=@WH_xap_id";  SqlCommand sqlCmd=new SqlCommand(delStr,cn);  sqlCmd.Parameters.Add("@WH_xap_id",SqlDbType.SmallInt,2); 
//Response.Write(((TextBox) e.Item.Cells[2].Controls[0]).Text.ToString());
//sqlCmd.Parameters["@WH_xap_id"].Value = this.DataGrid1.DataKeys[e.Item.ItemIndex]; sqlCmd.Parameters["@WH_xap_id"].Value =Int32.Parse( ((Label)e.Item.Cells[1].Controls[0]).Text); 
try 

cn.Open(); 
sqlCmd.ExecuteNonQuery(); 
cn.Close();  if(!Page.IsStartupScriptRegistered("delAlert")) 

Page.RegisterStartupScript("delAlert",@"<script language='javascript'>alert('删除成功');</script>"); 
}  BindGrid(); 

catch(Exception err) 

Response.Write(err.Message); 

finally 

if(cn.State == ConnectionState.Open) 

cn.Close(); 


          
}

解决方案 »

  1.   

    检查下这里,private void InitializeComponent()
    看看事件是不是丢失了
      

  2.   

    this.DataGrid1.CancelCommand += new 有啊
    System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand_1);
    this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand_1);
    this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
    this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);
    this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound_1);
      

  3.   

    目前我执行起来是这个错误:e.Item.Attributes.Add("onclick",Page.GetPostBackClientEvent(e.Item.Cells[1].Controls[0],""));是什么意思啊?