Tengo una WinForm principal que tiene una MyDataTable _dt
como miembro. El tipo MyDataTable se creó en la herramienta de diseño "conjunto de datos tipeados" en Visual Studio 2005 (MyDataTable hereda de DataTable) _dt
se rellena desde un db a través de ADO.NET. Sobre la base de los cambios de la interacción del usuario en el formulario, elimino una fila de la tabla de esta manera:Acceso a las filas eliminadas de una DataTable
_dt.FindBySomeKey(_someKey).Delete();
Más tarde, _dt
se pasa por valor a una forma de diálogo. A partir de ahí, tengo que buscar a través de todas las filas para construir una cadena:
foreach (myDataTableRow row in _dt)
{
sbFilter.Append("'" + row.info + "',");
}
El problema es que al hacer esto después de un borrado, la excepción siguiente: DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row.
El trabajo en torno a ese Actualmente estoy usando (que se siente como un truco) es la siguiente:
foreach (myDataTableRow row in _dt)
{
if (row.RowState != DataRowState.Deleted &&
row.RowState != DataRowState.Detached)
{
sbFilter.Append("'" + row.info + "',");
}
}
Mi pregunta: ¿Es esta la forma correcta de hacer esto? ¿Por qué el bucle foreach tiene acceso a las filas que se han etiquetado mediante el método Delete()
?
No necesita comprobar 'Independiente'. – SLaks