Срочно нужна помощь! Не могу выкинуть строку из коллекции

Smocker1975
Дата: 05.08.2005 12:40:30
Имеется отношение один-ко-многим
я хочу удалить строку-родителя вместе со всеми дочерними строками
и если какая-то из дочерних строк имеет статус Deleted, то она остается висеть в наборе данных, помеченная на удаление.

пробовал так:
dt - родительская таблица
dt2 - дочерняя таблица
dr - строка родитель
DataRow[] arr = dr.GetChildRows("Имя отношения");
foreach (DataRow dr2 in arr)
{
if (dr2.RowState == DataRowState.Deleted)
dr2.RejectChanges();
dt2.Rows.Remove(dr2);
}
dt.Rows.Remove(dr);

или так:
dr - строка родитель
DataRow[] arr = dr.GetChildRows("Имя отношения");
foreach (DataRow dr2 in arr)
{
if (dr2.RowState == DataRowState.Deleted)
dr2.AcceptChanges();
else
dt2.Rows.Remove(dr2);
}
dt.Rows.Remove(dr);

не удаляется и все тут.
дочерняя удаленная строка остается висеть в наборе данных помеченной на удаление.
Ошибка тут кроется именно в удаленных строках, так как остальные строки выкидываются нормально.

Кстати почему метод Remove не оказывает на строки помеченные как Deleted никакого влияния?
Hratchia
Дата: 05.08.2005 18:25:01

а AcceptChanges когда вызывать будешь?


Posted via ActualForum NNTP Server 1.2

Smocker1975
Дата: 11.08.2005 10:24:20
AcceptChanges вообще вызывать не буду, мне надо просто очистить коллекцию, не зависимо от того что в ней есть.
Я уже нашел решение проблемы, может кому пригодится:
Метод GetChildRows возвращает все строки, за исключением тех, которые имеют состояние Deleted.
поэтому сначала: Select("фильтр", "", DataRowViewState.Deleted), к полученным строкам применить метод AcceptChanges.
а уже потом GetChildRows и удаляем полученные строки методом Remove .