データソースがList<T>
. buttonRemove_Click() 関数でグリッドビューからアイテムを削除しようとすると、RowDeleting イベントを処理する別の関数が呼び出され、そこでアイテムも削除List<T>
されます。問題は、グリッドビューから複数のアイテムを削除することを選択した場合、グリッドビューのインデックスと非同期のインデックスが削除されることですList<T>
。たとえば、グリッドビューとリストに 10 個のアイテムがあり、最後の 2 つのアイテムを削除しようとしています。これが私のbuttonRemove_Click関数で行う方法です
foreach (GridViewRow row in gridViewItems.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("checkBox");
if (cb != null && cb.Checked)
{
gridViewItems.DeleteRow(row.DataItemIndex);
}
}
次に、RowDeleting 関数で、最初にインデックス 8 のイベントを受け取ります。これを削除しました。最後のアイテム (インデックス 9) を削除すると、インデックスが範囲外であるため、例外がスローされます。この問題を解決するにはどうすればよいですか?
逆の順序で行を削除しようとすると、つまり最高のインデックスから開始すると、問題は解決すると思います。どうすればこれを行うことができるか誰にもわかりますか?