[C#] Daten eines DataSet editieren

nuf

Grünschnabel
Hallo!
Also mein Problem ist folgendes:
Ich habe Datensätze in einer .xml Datei nach diesem Schema vorliegen:
Code:
<Stapel>
	<Anmeldung>
		<Spot>00</Spot>
		<Vorname>John</Vorname>
		<Nachname>Doe</Nachname>
		<Email>johndoe@example.com</Email>
	</Anmeldung>
</Stapel>

Diese .xml Datei lese ich ohne Probleme in ein DataSet ein.
Code:
// str_DataFile = Pfad zur .xml Datei , dsStapel = DataSet
FileStream fs = new FileStream(str_DataFile, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
dsStapel.ReadXml(sr);
Während der Laufzeit des Programms sollen die Datensätze allerdings verändert werden können, was mich vor das eigentliche Problem stellt. Wie?

Ein DataGridView kommt zum bearbeiten nicht in Frage (es sei den man kann diese elendige Tabellendarstellung (aus Nutzer sicht) hinter einer schönen Eingabemaske aus Textboxen etc. verstecken ;) )

Ich kenne mich persönlich noch nicht sonderlich mit DataSets etc. aus und habe beim suchen bisher auch noch nichts gefunden was mir hilfreich war.
Vielleicht kann mir einer von euch ja behilflich sein :)
 
Hi

Wenn du die Daten in strukturierter Form brauchst, solltest du diese auch so halten.
Nutz doch den XmlSerializer oder XmlReader/XmlWriter und les die Daten in ein strukturiertes Objekt (eigene Klasse schreiben oder Xml Schema erzeugen und mit Xsd.exe die Quellcode-Datei erzeugen)!
Damit hättest du ggf auch die Möglichkeit die Daten per DataBinding zu editieren.
 
Ich hatte schon mit dem gedanken gespielt die Daten einfach in einen Array einer dafür gebstelten Klasse zu speicher, aber die Sache mit den DataSets hat sich beim ersten Lesen intressant angehört ;D

Was Xml Schemata und DataBinding angeht muss ich mich nochmal umschauen, aber danke für die Antwort!
 
Databinding war ein schönes Stichwort :D

Falls irgendjemand mal etwas ähnliches ausprobieren will, ich habe das ganze jetzt so gestaltet:

Die Daten werden aus der .xml Datei in ein DataSet eingelesen und die einzelnen Spalten des DataSet (für unwissende: Ein DataSet ist wie eine Datenbank mit Tabellen,Spalten und Zeilen aufgebaut) an Texboxen im Programm gebunden. So kann auch direkt der Inhalt(des DataSet) bearbeitet werden wenn man etwas in eine Textbox eingibt/etwas verändert.

Code:
FileStream fileS = new FileStream("c:\pfad\zur\datei.xml",FileMode.Open,FileAccess.ReadWrite);
StreamReader sReader = new StreamReader(fileS);

/* dsStapel ist ein DataSet Objekt mit einer Tabelle (Anmeldung) drinne
die wiederrum mehrere Spalten besitzt (Vorname,Nachname,Email).
Mit Visual Studio Express kann man ein solches Objekt einfach in
der Entwurfsansicht seines Form erstellen und die Eigenschaften
bearbeiten */
dsStapel.ReadXml(sReader);

// Textfelder mit den Werten des ersten Eintrags befüllen
tb_Vorname.DataBindings.Add("Text", dsStapel, "Anmeldung.Vorname");
tb_Nachname.DataBindings.Add("Text", dsStapel, "Anmeldung.Nachname");
tb_Email.DataBindings.Add("Text", dsStapel, "Anmeldung.Email");
// Wichtig! Datei wieder schließen :p
sReader.Close();

Schreiben läßt sich das ganze dann sehr einfach

Code:
...
dsStapel.WriteXml("c:\pfad\zur\datei.xml", XmlWriteMode.IgnoreSchema);
...

Per Vorwärts/Rückwärts Button und der nötigen Funktion kann man dann auch ganz einfach durch die Datensätze des DataSet navigieren.

Das sieht so aus:(siehe Code)
Für eine genaue Erklärung bitte die MSDN Datenbank konsultieren da ich selbst nicht so der Profi bin und das gard erst gelernt habe :p
Code:
...
CurrencyManager cm = (CurrencyManager)this.BindingContext[dsStapel, "Anmeldung"];
...
cm.Position--;
// Oder
cm.Position++;
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück