I'm using ASP.net and i've added a delete button on a gridview and im trying to remove the row of the button clicked. The thing is though, that i get an InvalidOperationException on my foreach.
I may have other errors in the code or my logic may be wrong so if you see any of it please point them out. Thanks.
gridView cart.ASPX:
<asp:GridView ID="CartGrid" runat="server" AutoGenerateColumns="false" OnRowDeleting="RemoveSelected">
    <Columns>
        <asp:BoundField DataField="product_name" HeaderText="Name" />
        <asp:BoundField DataField="price_per_unit" HeaderText="Price" />
        <asp:BoundField DataField="unit" HeaderText="Unit" />
        <asp:TemplateField>
        <ItemTemplate>
        <asp:LinkButton ID="delSelected" runat="server" Text="Delete" CommandName="Delete"></asp:LinkButton>
        </ItemTemplate>
        <ItemStyle Width="100px" />
        </asp:TemplateField>
    </Columns>
</asp:GridView>
delete method cart.ASPX.CS
protected void RemoveBtn(object sender, GridViewDeleteEventArgs e)
    {
        ArrayList cartList = (ArrayList)Session["cartList"];
        GridViewRow row = (GridViewRow)CartGrid.Rows[e.RowIndex];
        String name = row.Cells[0].Text;
        //String name = (string)CartGrid.DataKeys[e.RowIndex].Value;
        //String name = CartGrid.SelectedRow.Cells[1].Text;
        foreach (product p in cartList)
        {
            if (p.product_name.Equals(name))
            {
                cartList.Remove(p);
            }
        }
        CartGrid.DataBind();
    }
 
     
     
    