C# 通过链接按钮从asp gridview中删除行

C# 通过链接按钮从asp gridview中删除行,c#,gridview,C#,Gridview,我花了相当长的时间研究如何做到这一点,但没有运气 <asp:GridView runat="server" ID="TBDSPCGrid" AutoGenerateColumns="false" AllowPaging="true" AllowSorting="false" DataKeyNames="SPID,CategoryId

我花了相当长的时间研究如何做到这一点,但没有运气

<asp:GridView runat="server" ID="TBDSPCGrid"
                    AutoGenerateColumns="false"
                    AllowPaging="true"
                    AllowSorting="false"
                    DataKeyNames="SPID,CategoryId,Category,RowNum, PurchaseDate, Title, Description,SFItemId" 
                    OnRowDataBound="TBDSPC_RowDataBound"
                    OnRowCreated="TBDSPC_RowCreated"
                    OnRowCommand="TBDSPC_Command"
                    OnPageIndexChanging="TBDSPC_PageIndexChanging"
                    OnRowDeleting="TBDSPC_OnRowDeleting">
                    <Columns>
                        <asp:TemplateField HeaderText="Timeouts" ItemStyle-Width="40px" ItemStyle-Wrap="false"
                            ItemStyle-CssClass="padding-right">
                            <ItemTemplate>
                                <div class="targeted-icons">
                                    <asp:LinkButton runat="server" id="LinkButton1" CommandName="delete" CommandArgument='<%#Eval("SFItemId")%>'
                                    ><img src="delete.png" /></asp:LinkButton>
                                </div>
                            </ItemTemplate>
                        </asp:TemplateField>
我试过了,但它不起作用…它给了我一个错误“对象引用未设置为对象的实例”


我已经编辑了你的标题。请参阅“”,其中一致意见是“不,他们不应该”。dere是一个输入错误“ataTable test=TargetedSpView.ToTable();”,您在哪一行得到错误?
protected void TBDSPCGrid_OnRowDeleting(object     sender, GridViewDeleteEventArgs e)
    {
        // do something
    }
protected void TBDSPC_Command(object sender, GridViewCommandEventArgs e)
    {
        GridView gv = (GridView)sender;
        switch (e.CommandName)
        {
            case "delete":
                {
                    DataTable test = TargetedSpView.ToTable();
                    test.Rows[0].Delete();
                    test.AcceptChanges();
                    TargetedSpView = test.DefaultView;
                    this.TBDSPCGrid.DataSource = this.TargetedSpView;
                    this.TBDSPCGrid.DataBind();
                }
                break;
}
}
protected void TBDSPC_Command(object sender, GridViewCommandEventArgs e)
{
    GridView gv = (GridView)sender;
    switch (e.CommandName)
    {
        case "delete":
            {
                    DataTable test = RetrieveData(0, 0); // this is a function I used to get a datatable
                    test.Rows[0].Delete();
                    test.AcceptChanges();
                    TargetedSpView = test.DefaultView;
                    TBDSPCGrid.DataSource = TargetedSpView;
                    TBDSPCGrid.DataBind();
            }
            break;
}
}