Data Grid OHNE Datenbank speichern

codeman

Erfahrenes Mitglied
Hallo,

Ich habe folgendes Problem:
ich soll den Inhalt eines DataGridView-Controls mit Formatierungen ohne eine Datenbank dahinter speichern, das heisst in eine 'normale' Datei.
Wie kann ich das am besten machen?
Die Zeilen und Spalten einzeln durchgehen und dann irgendwie in eine Datei schreiben?


EDIT:
Ich hätte folgende Idee gehabt:
Das DataGrid in ein Koordinatensystem einteilen: 1|0-1|1-... und dann zeilenweise in eine Datei schreiben:
1|0 "Text"
Arial, 16, Bold, Red
1|1 "Text2"
Tahoma, 22, Underline, Blue
...
aber ob das "die" Lösung ist weiss ich nicht.

Danke im Voraus,
codeman
 
Zuletzt bearbeitet:

Bella_Isy

Erfahrenes Mitglied
Hallo codeman,

ich würde dir Raten die Daten in eine .xml Datei zu speichern. Eine .xml ist leicht zu erstellen und ermöglicht die Tabellen struktur zu erhalten. Wenn man sich in .xml Dateien einmal eingefunden hat, ist es wirklich sehr leicht.

Gruß

Isabelle
 

codeman

Erfahrenes Mitglied
Hallo,

Danke für die Antwort!
1. Kannst du mir ein einfaches Beispiel geben, weil ich absoluter Xml neuling bin. (Theoretisch kann ich es zwar schon, aber mit der Praxis funktioniert es nicht so ganz... .

2. Wie genau würdest du die Datei aufbauen? Zellen/Zeilen-weise oder ganz anders?

Den Aufbau der XML Datei hätte ich mir folgenderweise gedacht:
Code:
Mother
      |-Child1
      |-Child2
      |      |-Key:Term1
      |      |-Key:Term2
      |      |-Key:TermN
      |-ChildN
...usw


Danke im Voraus.
codeman
 
Zuletzt bearbeitet:

Bella_Isy

Erfahrenes Mitglied
Hallo,

ich habe mich auch erst seit kurzen mit xml Dateien beschäftigt, aber ich würde es so machen.
Code:
<?xml version="1.0" encoding="utf-8"?>
<mother>
   <datensatz attribut1="Spalte1" attribut2="Spalte2">
      <child1 attribut1 ="ChildSpalte1" attribut2="ChildSpalte2">
      </child1>
      <child2 attribut1 ="ChildSpalte1" attribut2="ChildSpalte2">
         <key1>
             <![CDATA[Term1]]>
         </key1>
         <key2>
              <![CDATA[Term2]]>
         </key2>
         <key3>
              <![CDATA[Term3]]>
        </key3>
     </child2>
  </datensatz>
</mother>

Eine kleine Erklärung:
Ich würde eine Obergruppe wählen und dann alle Datensätze als Element mit den ensprechenden Attributen rein schreiben. Hat jetzt ein Datensatz ein Child würde ich ein neues untergeordnetes Element mit allen ensprechenden Attributen anlegen. Im Child2 habe ich die Keys in CDATA Sektionen geschrieben. Hat folgenden Vorteil. Solche sektionen schließt Code ein, der vom XML Paraser mißinterpretiert werden könnte.D.H. Das in dieser Sektion zum beispiel HTML-Tags eingefügt werden können für formatierung des Text.
Mit den Attribute kannst du die Werte der Spalten eines Datensatzes speichern.

Ich hoffe ich habe es gut erklärt, wenn du noch fragen hast dann schreib einfach
 

Norbert Eder

Erfahrenes Mitglied
Normalerweise wird ein DataGridView mittels eines DataSets befüllt. Das heißt, auch Neueingaben stehen im DataSet zur Verfügung.

Das schöne am DataSet ist die Methode WriteXml, mit der du die enthaltenen Daten in eine XML-Datei schreiben kannst.

Du sprichst jedoch von Formatierungen, die wie aussehen? Kann davon ausgegangen werden, dass jede Spalte dieselben Formatierungen hat, oder wie muss man sich das genau vorstellen? Werden Formatierungen eventuell aufgrund bestimmter Werte gesetzt?
 

codeman

Erfahrenes Mitglied
Hallo,
@Bella_Isy
Danke für den ausführlichen Code und die Erklärung - und danke auch für die Bemühung hier ein ganzes Xml-Dokument aufzusturukturieren!

@Norbert Eder
Ebenfalls danke für die Antwort!
Die Formatierungen sehen wie, z.B. in MS Excel aus, d.h. man kann (soll) in jeder Zelle verschiedene Hintergrundfarben und Schriftgrößen usw. wählen (können). Ausserdem kann man zum Beispiel nur Integer Werte einfüllen. Bestimmte Werte setzen aber keine Formatierungen.

codeman
 
Zuletzt bearbeitet: