Gridview удалить элементы
У меня есть gridview, в котором источником данных является List<T>
, Когда я пытаюсь удалить элемент из сетки в моей функции buttonRemove_Click(), вызывается другая функция, которая обрабатывает событие RowDeleting, когда я удаляю элемент из List<T>
также. Проблема в том, что если я выберу удалить несколько элементов из сетки, индекс сетки и мой List<T>
ип-синхронизируется. Например, у меня есть 10 элементов в сетке и в списке, и я пытаюсь удалить два последних элемента. Вот как я это делаю в своей функции 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), тогда будет выдано исключение, потому что индекс находится вне диапазона. Как мне решить эту проблему?
Я думаю, что проблема будет решена, если я попытаюсь удалить строки в обратном порядке, т.е. начиная с самого высокого индекса. Может кто-нибудь сказать, как это можно сделать?
1 ответ
GVGLCode1.DataSource = dt;
GVGLCode1.DataBind();
int iCount = GVGLCode1.Rows.Count;
for (int i = 0; i <= iCount; i++)
{
CheckBox cb = (CheckBox)GVGLCode1.rows[i].FindControl("checkBox");
if (cb != null && cb.Checked)
{
GVGLCode1.DeleteRow(i);
}
}
Пожалуйста, попробуйте с этим. Может быть, это может помочь вам.