vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
DataGridView <-> XML - best practice? 
Autor: Xcabur
Datum: 13.06.10 18:40

Hallo zusammen

Da wir uns in der Schule relativ intensiv mit XML, DTD, XMLSchema usw. befasst haben und ich nun ein kleines Programm schreiben möchte, welches Daten aus einer Tabelle speichern soll, dachte ich: Perfekt, ich schreibe die TabellenDaten einfach in ein XML.
Naja ich musste feststellen, dass es doch ein, zwei Hürden gibt... wahrscheinlich auch weil ich mich mit DataGridView nicht so auskenne, daher wollte ich mal nach dem empfohlenen Weg fragen.

Was soll in meinem Programm geschehen:
1a. Neues Projekt erstellen --> erzeugt leere Tabelle
1b. Bestehendes Projekt öffnen --> DataGridView Tabelle soll aus XML geladen werden
2. Tabelle wird durch User abgefüllt
3. Tabelle in XML speichern.

Ich erstelle die Tabelle wie folgt:

    Private Sub cmdNeu_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles cmdNeu.Click
 
        Dim dtTest As New System.Data.DataTable("Daten")
        dtTest.Columns.Add("Spalte1")
        dtTest.Columns.Add("Spalte2")
        dtTest.Columns.Add("Spalte3")
 
        Dim dvTest As New DataView(dtTest)
        dgvTest.DataSource = dvTest
 
    End Sub
Gespeichert wird sie so:

    Private Sub cmdSchreiben_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles cmdSchreiben.Click
        Dim dtTest As New System.Data.DataTable("Daten")
        Dim dvTest As New DataView
        dvTest = dgvTest.DataSource
        dtTest = dvTest.Table
        dtTest.WriteXml("test.xml", System.Data.XmlWriteMode.WriteSchema)
 
    End Sub
Zu erst habe ich das XML File ohne Schema geschrieben, hatte dann das Problem beim lesen, dass nur die Spalten erstellt wurden, welche auch Daten enthielten. Spaalten ohne Daten wurden nicht ins XML geschrieben und somit war die Spalte unbekannt.

Die Tabelle wird wie folgt gelesen:

 Private Sub cmdLesen_Click(ByVal sender As System.Object, ByVal e As _
   System.EventArgs) Handles cmdLesen.Click
 
        Dim dtTest As New System.Data.DataTable("Daten")
        Dim dvTest As New DataView()
        Dim dsTest As New System.Data.DataSet
 
        dsTest.ReadXml("test.xml", XmlReadMode.ReadSchema)
        dtTest = dsTest.Tables("Daten")
        dvTest.Table = dtTest
        dgvTest.DataSource = dvTest
 
        dgvTest.DataSource = dvTest
 
    End Sub
Muss ich wirklich den Umweg über das DS machen? Direkt ins DT konnte ich nicht lesen, da sich DT offensichtlich nicht mit der Option ReadSchema verträgt.

Ich hätte nun hauptsächlich gerne gewusst, ob dieser Weg gangbar ist oder ob es eine einfachere/bessere Möglichkeit gibt.

Konkret habe ich auch noch zwei Probleme:
1: Wie krieg ich es hin, dass im XML einem Knotenname z.B. Spalte1 verwendet wird und für den Spalten Header im DGV ein Caption z.B. Spalte 1. Wenn ich im Spaltenname beim Erzeugen einen Blank drinn habe krieg ich im XML so was wie "Spalte_x0002_1" -> Klar Blanks sind als XML-Knoten nicht zulässig, aber kann ich da irgendwie einen HeaderText mit geben, der automatisch gelesen wird?

2. Mein XML Root Element heisst nun immer <NewDataSet> kann ich das ändern?

Danke schon einmal für die Inputs...
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
DataGridView <-> XML - best practice?1.387Xcabur13.06.10 18:40

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel