vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück

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

ADO.NET / Datenbanken
Darstellung einer Boolean-Spalte im DGV vor/nach Speichern (XML) unterschiedlich 
Autor: Schudi
Datum: 12.06.18 14:13

Und gleich noch eine Folgefrage zur ReadXML-Problematik. Ich versuche das Problem mal zu erklären...

Ich lege zunächst eine Tabelle mit Testdaten per Code an:

    Dim _DSKunden As New DataSet("Kundendaten") 
    Dim _DTKunden As New DataTable("Kunden")
 
    With _DTKunden.Columns
         .Add("KundeNr", Type.GetType("System.String"))
         .Add("Kundename", Type.GetType("System.String"))
         .Add("Kundelogin", Type.GetType("System.String"))
         .Add("KundePw", Type.GetType("System.String"))
         .Add("KundeGetBE", Type.GetType("System.Boolean"))
         .Add("KundeSendBR", Type.GetType("System.Boolean"))
         .Add("KundeSendOK", Type.GetType("System.Boolean"))
         .Add("KundeSendPL", Type.GetType("System.Boolean"))
         .Add("KundeSendPLF", Type.GetType("System.Boolean"))
         .Add("KundeSendIndvPL", Type.GetType("System.Boolean"))
         .Add("KundeSendIndvPLF", Type.GetType("System.Boolean"))
    End With
 
    _DSKunden.Tables.Add(_DTKunden)
 
    Dim _myRow As DataRow
    _myRow = _DTKunden.NewRow
    _myRow("Kundenr") = "100"
    _myRow("Kundename") = "Max Mustermann"
    _myRow("Kundelogin") = "ABCDEFGH"
    _myRow("KundePw") = "123456"
    _myRow("KundeGetBE") = True
    _myRow("KundeSendBR") = True
    _myRow("KundeSendOK") = True
    _myRow("KundeSendPL") = True
    _myRow("KundeSendPLF") = True
    _myRow("KundeSendIndvPL") = True
    _myRow("KundeSendIndvPLF") = True
    _DTKunden.Rows.Add(_myRow)
 
    _DTKunden.AcceptChanges()
    _DSKunden.AcceptChanges()
 
    'Die Anzeige erfolgt in einem DataGridView
    DgvKunden.DataSource = _DSKunden.Tables("Kunden")
    DgvKunden.Refresh()
    DgvKunden.Show()
Soweit ist alles wunderbar und wie gewünscht. Die Boolean-Spalten werden automatisch als Checkbox im DGV angezeigt - entweder mit Häkchen drin (True) oder ohne Häkchen (False).

Jetzt werden die Datensätze in eine XML-Datei geschrieben...

        Dim _KundenXMLStream As New System.IO.FileStream(_KundenPfad, _
          System.IO.FileMode.Create)
        Dim _KundenXMLWriter As New System.Xml.XmlTextWriter(_KundenXMLStream, _
        System.Text.Encoding.Unicode)
        _DSKunden.WriteXml(_KundenXMLWriter)
        _KundenXMLWriter.Close()
Die XML-Datei sieht dann wie folgt aus:

<?xml version="1.0"?>
-<Kundendaten>
-<Kunden>
<KundeNr>100</KundeNr>
<Kundename>Max Mustermann</Kundename>
<Kundelogin>ABCDEFGH</Kundelogin>
<KundePw>123456</KundePw>
<KundeGetBE>true</KundeGetBE>
<KundeSendBR>true</KundeSendBR>
<KundeSendOK>true</KundeSendOK>
<KundeSendPL>true</KundeSendPL>
<KundeSendPLF>true</KundeSendPLF>
<KundeSendIndvPL>true</KundeSendIndvPL>
<KundeSendIndvPLF>true</KundeSendIndvPLF>
</Kunden>
-<Kunden>
<KundeNr>200</KundeNr>
<Kundename>Nils Schuder</Kundename>
<Kundelogin>ZZZZZZ</Kundelogin>
<KundePw>99999</KundePw>
<KundeGetBE>false</KundeGetBE>
<KundeSendBR>false</KundeSendBR>
<KundeSendOK>false</KundeSendOK>
<KundeSendPL>true</KundeSendPL>
<KundeSendPLF>true</KundeSendPLF>
<KundeSendIndvPL>true</KundeSendIndvPL>
<KundeSendIndvPLF>true</KundeSendIndvPLF>
</Kunden>
</Kundendaten>
Wenn ich die Daten jetzt wieder einlesen:

    _DSKunden.ReadXml(_KundenPfad)
 
    'Die Anzeige erfolgt in einem DataGridView
    DgvKunden.DataSource = _DSKunden.Tables("Kunden")
    DgvKunden.Refresh()
    DgvKunden.Show()
Die Boolean-Spalten werden jetzt automatisch als Text im DGV angezeigt - also das Wort "True" oder "False.

Ich vermute, dass beim Einlesen durch ReadXML der DataType der Spalten auf "String" festgelegt wird, statt auf Boolean.

Versuche ich diesen allerdings nachträglich zu ändern, kommt eine Meldung dass der Spaltentyp nicht mehr geändert werden darf nachdem die DatatTable Daten enthält.

Vor dem ReadXML kann ich den Datentyp aber auch nicht ändern, da die DataTable erst durch das ReadXML erzeugt wird.

Was muss ich machen, damit die Spalten auch nach dem Wiedereinlesen als CheckBox angezeigt werden?

Ich danke im Voraus für Eure Hilfe.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Darstellung einer Boolean-Spalte im DGV vor/nach Speichern (...51Schudi12.06.18 14:13
Re: Darstellung einer Boolean-Spalte im DGV vor/nach Speiche...19Manfred X12.06.18 14:57
Re: Darstellung einer Boolean-Spalte im DGV vor/nach Speiche...20Schudi12.06.18 15:05
Re: Darstellung einer Boolean-Spalte im DGV vor/nach Speiche...23Manfred X12.06.18 15:07
gelöst: Darstellung einer Boolean-Spalte im DGV vor/nach Spe...20Schudi12.06.18 15:20

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-2018 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