데이터 소스가 List<T>
인 gridview가 있습니다. 내 buttonRemove_Click() 함수에서 Gridview에서 항목을 제거하려고하면 RowDeleting 이벤트를 처리하는 또 다른 함수가 호출되어 List<T>
에서 항목을 제거하는 곳이 호출됩니다. 문제는 여러 항목을 gridview에서 제거하려는 경우 gridview의 색인과 내 List<T>
의 색인이 동기화되지 않습니다. 예를 들어, 내 gridview 및 내 목록에 10 항목이 있고 마지막 두 항목을 제거하려고합니다. 여기에 내가 RowDeleting 기능에 다음 나의 buttonRemove_Click 기능Gridview 항목 제거
foreach (GridViewRow row in gridViewItems.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("checkBox");
if (cb != null && cb.Checked)
{
gridViewItems.DeleteRow(row.DataItemIndex);
}
}
에서 그것을 어떻게, 내가 먼저 인덱스 (8)에 대한 이벤트를받을 수 있습니다, 나는 그것을 제거. 이제 마지막 항목 (인덱스 9)을 삭제할 때 인덱스가 범위를 벗어나므로 예외가 발생합니다. 이 문제를 어떻게 해결합니까?
역순으로 행을 제거하려고하면 문제가 해결 될 것이라고 생각합니다. 즉 가장 높은 색인부터 시작합니다. 아무도 이것이 어떻게 할 수 있는지 말할 수 있습니까?
각 행의 체크 박스를 찾으십시오. – harshagile
CheckBox를 추가하십시오. cb = (CheckBox) GVGLCode1 [i] .rows.FindControl ("checkBox"); – harshagile
이것은 작동하지 않습니다 – Tux