2010-03-17 14 views
8

Ich habe folgende Ausnahme in der Schleife foreachKann Objekt des Typs ‚System.Data.DataRowView‘ werfen

Nicht imstande ‚System.Data.DataRow‘ zum Typobjekt des Typs ‚System.Data zu werfen. DataRowView‘eingeben 'System.Data.DataRow'

Wie das Problem zu lösen?

+0

Ziemlich sicher, dass ich diese erraten kann, aber schreiben Sie den Code zunächst nur für den Fall. (Die "foreach" -Schleife.) –

+0

Ich entfernte das WPF-Tag, da die Frage nichts mit WPF –

Antwort

18

Ein DataRowView ist kein DataRow und ist nicht in einen DataRow konvertierbar. Sie können jedoch die entsprechenden DataRow die Eigenschaft mit Zugang:

foreach(DataRowView drv in dataView) 
{ 
    DataRow row = drv.Row; 
    ... 
} 
+0

foreach zu tun hat (DataRow dtrCurrentRow in ((System.Data.DataView) lstData.ItemsSource)). Table.Rows) { } Ich habe den obigen Code verwendet, um mein Ergebnis zu erhalten, lstData ist das Listenfeld Steuerung von wpf. Danke für Ihre Hilfe. –

+0

Sie können dies auch in einer Zeile mit LINQ tun: 'foreach (DataRow-Zeile in dataView.Select (drv => drv.Row))' –

0

Es sieht so aus, als ob Sie DataRow als Foreach-Loop-Variablentyp verwendet haben, während Sie tatsächlich mit DataRowView typen aufzählbar sind. Überprüfen Sie, ob DataRowView Funktionalität hat, die Sie benötigen, wenn Sie also nur eine durch eine andere ersetzen können. Oder Sie können Ihren Code so ändern, dass er mit DataRow anstatt mit DataRowView aufzählbar ist.

0

Statt versuchen Sie
foreach(DataRowView drv in myDataView).

1

Sie können wie Stimmen:

datarow= DirectCast (System.Data.DataRowView, System.Data.DataRow).row 
Verwandte Themen