Entwickler-Ecke

Sonstiges (.NET) - DataGidView im xml Format speichern/einlesen? (DataSet)


KokaLola - Mi 03.11.10 22:19
Titel: DataGidView im xml Format speichern/einlesen? (DataSet)
Moin - ich bins wieder ^^

Habe 2 weitere Fragen:
1. Wie kann ich ein DataGrid im xml Format mit DataSet? speichern.
2. Wie kann ich ein DataGrid im xml Format mit DataSet? einlesen.

Speichern:

Quelltext
1:
2:
3:
4:
DataSet writeXMLSchema = new DataSet();
writeXMLSchema = (DataSet)Accounts.DataSource;
writeXMLSchema.WriteXml("AccountDaten.xml");
Accounts.DataSource = writeXMLSchema;


Einlesen:

Quelltext
1:
2:
3:
DataSet readXMLSchema = new DataSet();
writeXMLSchema.ReadXml("AccountDaten.xml");
Accounts.DataSource = readXMLSchema;


So geht es leider irgendwie nicht :(
Mit freundlichen Grüßen
kokalola


Th69 - Do 04.11.10 11:14

Hallo KokaLola,

bist du jetzt von der List<> (bzw. Array) auf DataSet als DataSource umgestiegen? Wenn nicht, dann funktioniert selbstverständlich der Cast auf (DataSet) nicht und wird eine Exception werfen...

Ich wollte schon im anderen Post erst schreiben, daß du auch alternativ DataSet (bzw. besser DataTable) als DataSource verwenden kannst, wusste aber nicht, inwiefern du schon damit gearbeitet hast.

Richtig wäre also folgendes:
du erzeugst ein DataSet mit einer DataTable und bindest diese dann an das DGV:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
DataSet dataset = new DataSet();
DataTable table = new DataTable("Accounts");

// fill dataset table...
datatable.ReadXml("AccountDaten.xml");

dataset.Tables.Add(table); // Tabelle dem DataSet hinzuzufügen

datagridview.DataSource = table; // bzw. dataset["Accounts"]

Das DataSet brauchst du auch nur, wenn du mehrere Tabellen zusammenfassen willst, ansonsten reicht einfach mit DataTable zu arbeiten.

Und das Speichern ist dann ganz einfach:

C#-Quelltext
1:
2:
3:
table.WriteXml("AccountDaten.xml");
// bzw.
dataset["Accounts"].WriteXml("AccountDaten.xml");


Um Daten von Hand der DataTable hinzuzufügen, mußt du einzelne Zeilen (Rows) hinzufügen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
DataRow row = table.NewRow();

// Set values in the columns:
row["EMail"] = "info@test.de";
row["Password"] = "MyPassword";

// add the row to the rows collection.
table.Rows.Add(row);


Viel Erfolg noch -)


KokaLola - Do 04.11.10 15:15

Danke =) aber wei beziehe ich das ganze nun auf mein DataGridView?...
Im prinzip will ich ja in meinem GridView Datensätze eingeben können und diese dann abspeichern und erneut laden können...
Oder muss ich jede Zeile einzeln (mit ner for-schleife) einlesen? Das ich das gar nich in einem Schritt abspeichern kann....?