| |
ADO.NET / DatenbankenDarstellung 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. | |
Re: Darstellung einer Boolean-Spalte im DGV vor/nach Speichern (XML) unterschiedlich | | | Autor: Manfred X | Datum: 12.06.18 14:57 |
| Gibt es einen Grund, weshalb Du nicht einfach das Datenschema speicherst?
Ohne Datenschema kann man Spaltentypen beim Lesen nicht erkennen. | |
Re: Darstellung einer Boolean-Spalte im DGV vor/nach Speichern (XML) unterschiedlich | | | Autor: Schudi | Datum: 12.06.18 15:05 |
| Vielen Dank für Deine Antwort.
Nein, gibt es nicht.
Ich bin nach dem Beispiel aus der MSDN aus meinem letzten Thread davon ausgegangen, dass das Schema automatisch beim WriteXML vom XMLWriter mit gespeichert wird. So stand es in dem verlinkten Beispiel...
Wie müsste ich das Speichern denn abändern, damit das Schema mit gespeichert wird? | |
gelöst: Darstellung einer Boolean-Spalte im DGV vor/nach Speichern (XML) unter.. | | | Autor: Schudi | Datum: 12.06.18 15:20 |
| Vielen Dank und zehn Mal "Sorry". Ich bin ein Blindfisch....
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, XmlWriteMode.WriteSchema)
_KundenXMLWriter.Close() Und schon ist die Sache "gegessen". Ist ja nicht so, als hättest Du mir das nicht heute Morgen schon gesagt... | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere Infos
|
|
|
Copyright ©2000-2024 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
|
|