DataSet sortieren

14/02/2010 - 19:45 von Martin | Report spam
hallo nochmal!
folgender code bringt in der sortierversuch-zeile die fehlermeldung 'Die
Spalte [Status] wurde nicht gefunden.' und ich finde nicht heraus warum.

DataSet oDs = new DataSet();
oDs.ReadXml(Directory.GetCurrentDirectory() + "\\XmlDatei.xml");

string sFilterExp = "Status = 'Active'";
string sSortExp = oDs.Tables[0].Columns[0].ToString();

DataRow[] aryDr = oDs.Tables[0].Select(sFilterExp, sSortExp,
DataViewRowState.CurrentRows);

die spalte in der tabelle ist vorhanden, wenn ich im Debugmodus nachsehen &
sie heißt auch so, wie erwartet, heißt sSortExp ist io, - was ist bloß
verkehrt?

Martin
 

Lesen sie die antworten

#1 Marcel Roma
14/02/2010 - 23:51 | Warnen spam
Hallo Martin,

Am Sun, 14 Feb 2010 10:45:01 -0800 schrieb Martin:

die spalte in der tabelle ist vorhanden, wenn ich im Debugmodus nachsehen &
sie heißt auch so, wie erwartet, heißt sSortExp ist io, - was ist bloß
verkehrt?



Der von Dir genannte Ausnahmefehler kann mehrere Ursachen haben. Die ersten
sind relativ schnell zu überprüfen:

1. DataTable.Columns null ist oder enthàlt keine Eintràge enthàlt.
2. DataTable.Columns[sSortExp] findet keine entspr. Spalte.

Da die Zuweisung string sSortExp = oDs.Tables[0].Columns[0].ToString()
gelingt, und es sich also nicht um einen Tippfehler handelt, sind die
ersten beiden Fehlerquellen auszuschließen.

3. Nun gibst Du aber beim Aufrufen von Select() als letzten Parameter
DataViewRowState.CurrentRows mit. Dies hat zur Folge, dass jede DataRow mit
dem angegebenen DataViewRowState verglichen/evaluiert wird. Wenn die
DataRow aber - aus welchen Gründen auch immer - *null* ist (und keine
interne Aggregationsspalte), wird eine EvaluateException mit genau dem
Fehlertext geworfen, den Du angegeben hast.

Meine Frage: Kann es sein, dass deine DataTable eine DataRow == null
enthàlt?

(Wie immer in solch obskuren Fàllen ist es gut, wenn der StackTrace
mitgeliefert wird.)


Gruss
Marcel

Ähnliche fragen