我在DataGrid中增加了一个按钮列,代码如下:
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False" onDeleteCommand="DataGrid1_Delete" DataKeyField="ID" …………………………>
<Columns>
  <asp:BoundColumn DataField="TJ" HeaderText="条件"></asp:BoundColumn>
  <asp:BoundColumn DataField="PD" HeaderText="判断"></asp:BoundColumn>
  <asp:ButtonColumn Text="删除" HeaderText="删除" CommandName="Delete"></asp:ButtonColumn>
</Columns>
</asp:datagrid>然后在C#中写代码如下:
protected void DataGrid1_Delete(object sender,DataGridCommandEventArgs e)
{
    //code;
}为什么这个事件不触发呢???

解决方案 »

  1.   

    DataGrid的数据绑定在IsPostBack中
      

  2.   

    datagrid1_itemcommand里面写
    if ( e.commandname == "delete" )
    {
        //code;
    }
      

  3.   

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    ....
                               this.DataGrid1.DeleteCommand+=new DataGridCommandEventHandler(DataGrid1_Delete);
    }
      

  4.   

    查一下DataGrid1_Delete是否关联事件,如果界面有变动,很容易丢关联事件的。
      

  5.   

    呵呵,晚一步,正如 Eddie005(暴走005) 所说!
      

  6.   

    Eddie005(暴走005)所说的我试过了,还是不行,触发不了!
      

  7.   

    Seeko0(阿 枫) :
    我的Page_load是这样写的:
    private void Page_Load(object sender, System.EventArgs e)
    {
       if (!Page.IsPostBack)
       {
         //code;
       DataGrid1.DataSource = DataTable;
       DataGrid1.DataBind();
       }
    }
      

  8.   

    hbzx(hbzx):
     我试过你的方法了,我增加了 OnItemCommand="DataGrid_ItemCommand",然后代码如下:
    protected void DataGrid_ItemCommand(object sender,DataGridCommandEventArgs e)
    {
       Response.Write("abcdefg");
    }连这个"abcdefg"都显示不出来,也就是根本不触发这个事件
      

  9.   

    楼主的代码没看出什么问题,Delete事件中执行了什么代码呢?怎么知道没触发?
      

  10.   

    可能是datagrid把事件丢失了。这可能是.net IDE的问题。
      

  11.   

    webdiyer(陕北吴旗娃):
    Delete事件中没写什么代码,只是写了一个响应语句:
    Response.Write("HELLO!");dangdangdangdang(当当):
    事件丢了是不是加一个
    this.DataGrid1.DeleteCommand+=new DataGridCommandEventHandler(DataGrid1_Delete);
    可是加了也不行:(
    加分了,急求解决。
      

  12.   

    看看你的程序里的事件委托代码是否有,即
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    ....
                               this.DataGrid1.DeleteCommand+=new DataGridCommandEventHandler(DataGrid1_Delete);
    }
    这段代码,如没有则加上
      

  13.   

    你得页面有没有禁用enableviewstate=false 或者datagrid 禁用 enableviewstate=false
      

  14.   

    把这个datagird 删除 重新添加一个
      

  15.   

    解决;
    正如gzsxy8013(more)所说的,datagrid 禁用 enableviewstate,把enableviewstate改成true即可,散分!