| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 2079: ListView-Inhalt in Datei speichern und wieder auslesen | | | Autor: PhoenixUnderFire | Tipp anzeigenDatum: 09.03.13 05:05 |
| Hallo zusammen,
ich habe diesen Code erfolgreich in mein Projekt implementiert.
Mein Problem besteht leider darin, dass das Item nicht in die 1 Spalte eingetragen wird sondern in die 2 Spalte.
Das Subitem wird somit in Spalte 3 eingefügt. Spalte 1 hingegen ist ohne inhalt.
Wie kann ich der Funktion lvw_ReadData mitteilen, dass er die Werte in die richtigen Spalten reinschreibt.
Hoffe es war einigermaßen verständlich.
Danke euch schon einmal für die Hilfe und wünsche
allen ein schönes Wochenende
Viele Grüße Phoenix | |
Re: ListView-Inhalt in Datei speichern und wieder auslesen | | | Autor: Manfred X | Datum: 09.03.13 11:17 |
| Hallo!
Probier mal diese Variante - grob getestet.
Geänderte Parameterliste beachten.
''' <summary>
''' Füllt das ListView mit den Datenzeilen der angegebenen Datei.
''' </summary>
''' <param name="lvw">zu füllendes ListView-Control</param>
''' <param name="DataFile">Dateiname der Datendatei</param>
''' <param name="lineseparator">Zeilen-Trennzeichenfolge</param>
''' <param name="fieldseparator">Feld-Trennzeichenfolge (innerhalb der
' Zeilen)</param>
''' <param name="CreateColumns">Anzahl zu erstellender Spalten (oder -1)</param>
''' <param name="AppendData">True, wenn die Daten angehängt werden sollen.
''' False, wenn das ListView vorher gelöscht werden soll.</param>
''' <param name="LinesRead">Anzahl gelesener Zeilen</param>
''' <returns>True, bei Erfolg, andernfalls False.</returns>
Public Function lvw_ReadData(ByVal lvw As ListView, _
ByVal DataFile As String, _
Optional ByVal lineseparator As String = _
vbNewLine, _
Optional ByVal fieldseparator As String = ";", _
Optional ByVal CreateColumns As Integer = -1, _
Optional ByVal AppendData As Boolean = False, _
Optional ByRef LinesRead As Integer = -1) As _
Boolean
Dim bResult As Boolean = False
Try
' Existiert die Datei?
If IO.File.Exists(DataFile) Then
' Datei vollständige einlesen und in einzelne Zeilen aufsplitten
Dim sLines() As String = IO.File.ReadAllText( _
DataFile, System.Text.Encoding.Default).Split({lineseparator}, _
StringSplitOptions.RemoveEmptyEntries)
' Anzahl ListView-Spalten
Dim lvwCols As Integer = lvw.Columns.Count
' ggf. Anzahl Spalten sicher stellen
If CreateColumns > 0 And lvwCols < CreateColumns Then
While lvwCols < CreateColumns
lvw.Columns.Add("SP_" & CStr(lvwCols + 1))
lvwCols = lvw.Columns.Count
End While
End If
lvw.BeginUpdate()
' ggf. Zeilen im ListView löschen
If Not AppendData Then lvw.Items.Clear()
LinesRead = 0 'Zähler für gelesene Zeilen init.
' Jetzt die Datenzeilen in das ListView übertragen
For i As Integer = 0 To sLines.Length - 1
Dim sData() As String = sLines(i).Split({fieldseparator}, _
StringSplitOptions.None)
'Zeile im Listview anhängen / Hauptspalte füllen
Dim lvi As ListViewItem = lvw.Items.Add(sData(0))
'Ermittlung der Anzahl auszugebender Spalten / Subitems
Dim cols As Integer = Math.Min(lvwCols, sData.Length)
'Subitems eintragen
For u As Integer = 1 To cols - 1
lvi.SubItems.Add(sData(u))
Next u
LinesRead += 1
Next i
lvw.EndUpdate()
bResult = True
End If
Catch
End Try
Return (bResult)
End Function
Beitrag wurde zuletzt am 09.03.13 um 11:39:09 editiert. | |
Re: ListView-Inhalt in Datei speichern und wieder auslesen | | | Autor: PhoenixUnderFire | Datum: 09.03.13 12:19 |
| Hallo Manfred,
vielen dank für die schnelle Antwort.
Leider funktioniert der vorliegende Code nicht so wie erwartet.
Nun werden die Werte zwar in der ersten Spalte der Listview eingetragen, allerdings auch die Werte meiner 2 Spalte.
Gruß Phoenix | |
Re: ListView-Inhalt in Datei speichern und wieder auslesen | | | Autor: Manfred X | Datum: 09.03.13 12:49 |
| Du mußt die Parameter für die Line- und FieldSeparatoren
korrekt an die Routine übergeben (vbNewline bzw. vbTab). | |
Re: ListView-Inhalt in Datei speichern und wieder auslesen | | | Autor: PhoenixUnderFire | Datum: 09.03.13 18:01 |
| Hallo Manfred,
nochmal vielen Dank für deine Hilfe.
Habs jetzt nach deiner Anweisung hinbekommen, allerdings musste ich feststellen,
das nur die ersten zeile ins Listview eingetragen wird. Zeile 2 und 3 werden nicht eingelesen.
Was mach ich falsch?
Siehg vor lauter Bäumen den Wald nicht mehr, daher habe ich meinen derzeitigen Code nocheinmal beigefügt...
Public Function lvw_ReadData(ByVal lvw As ListView, _
ByVal DataFile As String, _
Optional ByVal lineseparator As String = _
vbNewLine, _
Optional ByVal fieldseparator As String = _
vbTab, _
Optional ByVal CreateColumns As Integer = -1, _
Optional ByVal AppendData As Boolean = False, _
Optional ByRef LinesRead As Integer = -1) As _
Boolean
Dim bResult As Boolean = False
Try
' Existiert die Datei?
If IO.File.Exists(DataFile) Then
' Datei vollständige einlesen und in einzelne Zeilen aufsplitten
Dim sLines() As String = IO.File.ReadAllText( _
DataFile, System.Text.Encoding.Default).Split({lineseparator}, _
StringSplitOptions.RemoveEmptyEntries)
' Anzahl ListView-Spalten
Dim lvwCols As Integer = lvw.Columns.Count
' ggf. Anzahl Spalten sicher stellen
If CreateColumns > 0 And lvwCols < CreateColumns Then
While lvwCols < CreateColumns
lvw.Columns.Add("SP_" & CStr(lvwCols + 1))
lvwCols = lvw.Columns.Count
End While
End If
lvw.BeginUpdate()
' ggf. Zeilen im ListView löschen
If Not AppendData Then lvw.Items.Clear()
LinesRead = 0 'Zähler für gelesene Zeilen init.
' Jetzt die Datenzeilen in das ListView übertragen
For i As Integer = 0 To sLines.Length - 1
Dim sData() As String = sLines(i).Split({fieldseparator}, _
StringSplitOptions.RemoveEmptyEntri_
es)
'Zeile im Listview anhängen / Hauptspalte füllen
Dim lvi As ListViewItem = lvw.Items.Add(sData(0))
'Ermittlung der Anzahl auszugebender Spalten / Subitems
Dim cols As Integer = Math.Min(lvwCols, sData.Length)
'Subitems eintragen
For u As Integer = 1 To cols - 1
lvi.SubItems.Add(sData(u))
Next u
LinesRead += 1
Next i
lvw.EndUpdate()
bResult = True
End If
Catch
End Try
Return (bResult)
End Function Danke. | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) 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
|
|