CommandName='delete"和OnDeleteCommand='delete"之类问题

解决方案 »

  1.   

    默认的DataGrid设置中有按钮列,OnDeleteCommand是专门为按钮列中的删除按钮服务的。onItemCommand则更为广泛,任何按钮事件都将触发该方法,并且可以通过CommandName和ArgumentName进行分组
      

  2.   

    //代码中包含如delete之类的标准操作和自定义的Do操作
    <asp:dataGrid id="dataGrid1" runat="server" ondeleteCommand="DataGrid_Delete" DataKeyField="ID">
        <asp:TemplateColumn HeaderText="操作" >
            <ItemTemplate>
                <asp:linkButton id="btnDo" runat="server" text="处理" oncommand="btnDo_Click" CommandName="Do" CommandArgument='<%# DataBinder.Eval( Container.DataItem , "ID")%>'>
                </asp:linkButton>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="操作" >
            <ItemTemplate>
                <asp:linkButton id="btnDelete" runat="server" text="删除" CommandName="Delete"/>
              </ItemTemplate>
        </asp:TemplateColumn></asp:dataGrid>后台代码
    //点处理对应的操作
    public void btnDo_Click( object sender, System.Web.UI.WebControls.CommandEventArgs e )
    {
        //获取传过来的ID的值
        int id = Convert.ToInt32( e.CommandArgument )
        ................
        处理相应的数据
        ................}
    //处理删除对应的操作
    public void btnDo_Click( object sender, DataGridCommandEventArgs e )
    {
        //获取对应行的主键    
        int id = Convert.ToInt32( DataGrid1.DataKeys[(int)e.Item.ItemIndex])
        ................
        处理相应的数据
        ................}
      

  3.   

    处理删除对应的操作的地方写错了一个单词,应该是
    public void DataGrid_Delete( object sender, DataGridCommandEventArgs e )
      

  4.   

    在实行delete时,两者都可以实现一样的效果。不过后者的可读性会好一点。其实用哪个都是一样的。