저는 ASP.net을 사용하고 있습니다. 그리드 뷰에 삭제 버튼을 추가했고 클릭 한 버튼의 행을 제거하려고했습니다. 문제는 내 foreach에서 InvalidOperationException을 얻는다는 것입니다.ASP.net GridView InvalidOperationException 삭제시 foreach에
코드에 다른 오류가 있거나 논리가 잘못되었을 수 있으므로 그 중 하나가 표시되면 오류가 있음을 지적하십시오. 감사.
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>
삭제 방법 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();
}
반복 변수 또는 반복되는 컬렉션을 수정할 수 없습니다. – C4u
'[foreach'에서 항목을 효율적으로 삭제] 가능한 복제본 (http://stackoverflow.com/questions/8791557/efficiently-deleting-item-from-within-foreach) – klashar
[내가 수정할 수없는 이유는 무엇입니까? foreach에서 루프 변수?] (http://stackoverflow.com/questions/3551696/why-cant-i-modify-the-loop-variable-in-a-foreach) – C4u