Ranayna
Vice Admiral
- Registriert
- Mai 2019
- Beiträge
- 6.489
Hallo zusammen,
ich darf mal wieder meine Ignoranz zur schau stellen. Ich moechte das erste mal mit einem DataGridView arbeiten und fuchse mich da grade ein bisschen rein.
Datenquelle ist ein XML, welches ich per REST API von einem remote Server hole. Der Part funktioniert, und das habe ich auch schon des oefteren gemacht.
Jetzt stehe ich aber irgendwie total auf dem Schlauch beim Auswerten der Daten...
Folgender Code:
Mein Problem: Der DataGridView wird gefuellt, aber in allen Zeilen des Views steht das gleiche, obwohl die Rohdaten dem wiedersprechen. Count passt, ich bekomme eine Zeile pro XmlNode.
Setze ich einen Breakpoint im foreach, sehe ich, das der node auch bei jedem Durchlauf anders ist, aber das gridRow Array wird nicht aktualisiert. Klicke ich mich durch die "locals" im Debugger finde ich keinen Fehler im XML, alle Nodes der nodeList sind unterschiedlich, und das "node" Element, bzw dessen innerXML passt auch bei jedem Durchlauf.
Ist egal ob ich das Array innerhalb des foreaches bei jedem durchlauf definiere oder es wie oben ausserhalb tue, das Ergebnis ist das selbe.
Beispiel XML
Falls relevant: Die Anwendung ist eine 08/15 WinForms Anwendung, erstellt in VS2017, der Code ist Teil einer Button_Click Methode.
Wahrscheinlich ist das mal wieder eine pisselige Kleinigkeit an der man erkennt das ich keine Ahnung habe Bitte seit milde
ich darf mal wieder meine Ignoranz zur schau stellen. Ich moechte das erste mal mit einem DataGridView arbeiten und fuchse mich da grade ein bisschen rein.
Datenquelle ist ein XML, welches ich per REST API von einem remote Server hole. Der Part funktioniert, und das habe ich auch schon des oefteren gemacht.
Jetzt stehe ich aber irgendwie total auf dem Schlauch beim Auswerten der Daten...
Folgender Code:
C#:
XmlNodeList nodeList = resultXML.SelectNodes("//row");
string[] gridRow = new string[3];
foreach (XmlNode node in nodeList)
{
gridRow[0] = node.SelectSingleNode("//Knoten1").InnerText;
gridRow[1] = node.SelectSingleNode("//Knoten2").InnerText;
gridRow[2] = node.SelectSingleNode("//Knoten3").InnerText;
dataGridView1.Rows.Add(gridRow);
}
Mein Problem: Der DataGridView wird gefuellt, aber in allen Zeilen des Views steht das gleiche, obwohl die Rohdaten dem wiedersprechen. Count passt, ich bekomme eine Zeile pro XmlNode.
Setze ich einen Breakpoint im foreach, sehe ich, das der node auch bei jedem Durchlauf anders ist, aber das gridRow Array wird nicht aktualisiert. Klicke ich mich durch die "locals" im Debugger finde ich keinen Fehler im XML, alle Nodes der nodeList sind unterschiedlich, und das "node" Element, bzw dessen innerXML passt auch bei jedem Durchlauf.
Ist egal ob ich das Array innerhalb des foreaches bei jedem durchlauf definiere oder es wie oben ausserhalb tue, das Ergebnis ist das selbe.
Beispiel XML
XML:
<?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:[ENTFERNT]>
<return>
<row>
<Knoten1>Text</Knoten1>
<Knoten2>NochmehrText</Knoten2>
<Knoten3>f</Knoten3>
</row>
<row>
<Knoten1>Text</Knoten1>
<Knoten2>AndererText</Knoten2>
<Knoten3>t</Knoten3>
</row>
<row>
<Knoten1>Text</Knoten1>
<Knoten2>NochmalAndererText</Knoten2>
<Knoten3>f</Knoten3>
</row>
[...weitere <row></row> Elemente, immer im gleichen Muster...]
</return>
</ns:[ENTFERNT]>
</soapenv:Body>
</soapenv:Envelope>
Wahrscheinlich ist das mal wieder eine pisselige Kleinigkeit an der man erkennt das ich keine Ahnung habe Bitte seit milde