Den Zugriff auf gelöschte Zeilen aus der DataTable

Ich habe ein Elternteil WinForm, dass eine MyDataTable _dt als Mitglied. Die MyDataTable Art wurde in der "typed dataset" designer-tool in Visual Studio 2005 (MyDataTable erbt von DataTable) _dt wird bevölkert von einer db über ADO.NET. Basierend auf den änderungen von Benutzer-Interaktion in form lösche ich eine Zeile aus der Tabelle etwa so:

_dt.FindBySomeKey(_someKey).Delete();

Später _dt durch Wert übergeben wird, um ein dialog-Formular. Von dort aus, muss ich Scannen durch alle Zeilen erstellen Sie eine Zeichenfolge:

           foreach (myDataTableRow row in _dt)
            {
                sbFilter.Append("'" + row.info + "',");
            }

Das problem ist, dass nach dem tun dies nach einem löschen, wird die folgende Ausnahme ausgelöst:
DeletedRowInaccessibleException: Deleted row information cannot be accessed through the row.

Die Arbeit, die ich bin derzeit mit (fühlt sich an wie ein hack), ist die folgende:

           foreach (myDataTableRow  row in _dt)
            {
                if (row.RowState != DataRowState.Deleted &&
                    row.RowState != DataRowState.Detached)
                {
                    sbFilter.Append("'" + row.info + "',");
                }
            }

Meine Frage: Ist das der richtige Weg, dies zu tun? Warum würde die foreach-Schleife zugreifen Zeilen, die markiert wurden, über die Delete() Methode??

  • Sie nicht brauchen, um zu überprüfen, für Detached.
InformationsquelleAutor Ken | 2010-04-26
Schreibe einen Kommentar