У меня есть набор данных с несколькими таблицами данных внутри. Я отображаю DataTables в ListView (я не знал о привязке данных, когда писал код). В любом случае, я хотел бы удалить строки из DataTables внутри DataSet.
Я пробовал это:
foreach (DataRow row in dsData.Tables["Table1"].Rows)
{
//find the row that contains the username I'm after
if (item.SubItems[2].Text == row["LoginName"].ToString())
{
dsData.Tables["Table1"].Rows.Remove(row); //<- main code of interest
}
}
Я тоже пробовал
dsData.Tables["Table1".Rows.Delete(row);
Проблема, с которой я сталкиваюсь, заключается в том, что когда вы удаляете строку, я получаю исключение:
Коллекция была изменена; операция перечисления может не выполняться.
Из того, что я понимаю, это потому, что когда вы удаляете строку из ListView, строка под ней перемещается вверх и вызывает все эти проблемы. Сам код делает то, что должен, но не приятно видеть это исключение, когда вы его запускаете.
Я собирался переписать весь класс с помощью DataGridView, но, скорее всего, исправлю эту строку:).
РЕДАКТИРОВАТЬ: Я даже не уверен, что DataGridView все равно решит проблему.