Listview Inhalt speichern / auslesen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Listview Inhalt speichern / auslesen

    Hallo,

    ich habe ein Problem. Ich habe ein Programm zur Verwaltung von Filmen erstellt. Man kann also die ganzen Daten (Titel, Genre, Laufzeit, FSK...) von den Filmen in den TextBoxen eingeben und sobald man auf einen Button klickt, werden diese Daten in eine Listview eingefügt. -> Somit hat diese dann mehrere Zeilen und Spalten. Wie kann ich diese Listview bzw. den Inhalt so speichern, dass bei einem erneuten Programmstart der Inhalt wieder in der Listview ist?

    Ich hab schon alles versucht und überall gesucht, doch das was ich gefunden habe, funktioniert bei VB 2012 nicht.

    Danke schon im Voraus. :)

    ItsMyWorld schrieb:

    Entweder du erstellst dir eine Datenbank oder du speicherst es in Textdateien und lässt diese dann bei Programmstart auslesen. Ich wäre eher für ersteres.
    Danke, aber bin ein Neuling darin und könntest du mir vielleicht ein Beispielcode für das speichern/auslesen in/aus einer Textdatei in eine Listview geben?
    Also für das "Speichern einer Listview" u.ä. findest du hier unter dieser Seite etliche Themen hier im Forum.
    Solltest du es gescheid mache wollen, lege ich dir jedoch die genannten Links ans Herz. Und zwar Ohne Datenbank! Im Grunde wird (fast) alles im Designer zusammengeklickert. Wenn man den Sinn der Datenbindung verstanden hat, geht das in wenigen Minuten mit vielleicht 3 Zeilen Code zum Speichern und Laden als XML. Das wichtigste Element ist hierbei das typisierte Dataset, dass dir qualifizierten Zugriff auf deine Daten gestattet und mit XYDAtaset.WriteXML(Pfad) bzw. XYDataset.ReadXML(Pfad) gespeichert und geladen wird.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    @ItsmyWorld: Was ist bei dir schief gelaufen?
    Wozu soll er direkt eine Datenbank für die paar User eingaben anlegen <.<

    Löse das ganze über eine Text Datei, das reicht völlig aus!

    Natürlich Listview gegen eine LB tauschen, oder den code etwas umschreiben.

    Das Speichern löst du so:

    VB.NET-Quellcode

    1. If TextBox1.Text = "" Then
    2. MsgBox("Bitte Überprüfe Dein Eingegebenes Wort!")
    3. Else
    4. Dim Namen As String = TextBox1.Text
    5. My.Computer.FileSystem.WriteAllText("Wörter.txt",
    6. vbNewLine + Namen, True)
    7. ListBox1.Items.Clear()
    8. Dim a As New RichTextBox
    9. a.Text = IO.File.ReadAllText("Wörter.txt")
    10. For i As Integer = 0 To a.Lines.Count - 1
    11. ListBox1.Items.Add(a.Lines(i))
    12. Next i
    13. End If


    Im Form Load Event kommt folgendes rein:

    VB.NET-Quellcode

    1. Dim a As New RichTextBox
    2. a.Text = IO.File.ReadAllText("Wörter.txt")
    3. For i As Integer = 0 To a.Lines.Count - 1
    4. ListBox1.Items.Add(a.Lines(i))
    5. Next i


    Zusätzlich noch ein Code der das Ausgewählte Item Löscht.

    VB.NET-Quellcode

    1. Dim zeilen() As String = IO.File.ReadAllLines("Wörter.txt")
    2. IO.File.Delete("Wörter.txt")
    3. Dim strW As New IO.StreamWriter("Wörter.txt")
    4. For Each z As String In zeilen
    5. Select Case z
    6. Case ListBox1.SelectedItem
    7. Case Else
    8. strW.WriteLine(z)
    9. End Select
    10. Next
    11. strW.Close()
    12. strW.Dispose()
    13. ListBox1.Items.Clear()
    14. Dim a As New RichTextBox
    15. a.Text = IO.File.ReadAllText("Wörter.txt")
    16. For i As Integer = 0 To a.Lines.Count - 1
    17. ListBox1.Items.Add(a.Lines(i))
    18. Next i

    C&P wird dir nicht immer weiterhelfen!
    Schau es dir an und versuch den Code zu verstehen!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SchokoMilch“ ()

    SchokoMilch schrieb:

    @ItsmyWorld: Was ist bei dir schief gelaufen?
    Wozu soll er direkt eine Datenbank für die paar User eingaben anlegen <.<

    Löse das ganze über eine Text Datei, das reicht völlig aus!

    Natürlich Listview gegen eine LB tauschen, oder den code etwas umschreiben.
    Leider funktioniert das aber nur mit der ersten Spalte...also mit dem Filmtitel :(
    @Vatter

    Vatter schrieb:

    Schau dir mal Daten laden, speichern, verarbeiten und DB-Programmierung ohne Datenbank an. Das sollte das sein was du suchst. Listview und Co sind dafür Ranz.

    Fiel Fergnügen

    Vatter

    also ich kapier das nicht so wirklich...ich bin Neuling auf der Ebene und mit den Links kann ich nichts anfangen.



    @SchokoMilch

    ich will ja aber die Listview erst kurz vor dem Schließen des Programms speichern....also ich gebe alle Daten ein -> Listview hat dann zum Beispiel 45 Zeilen und 20 Spalten...und kurz bevor ich das Programm dann schließe, drücke ich auf einen "Speichern"-Button, wodurch dann der ganze Inhalt der Listview in eine Textdatei gespeichert wird.
    Lasst doch den Schmarrn mit der ListView.

    Ich hab Dir ein kurzes Video gemacht, dass Dir zeigt, wie einfach es mit einem DataSet und einem DataGridView zu bewerkstelligen ist.

    youtube.com/watch?v=ak-FvrEO5jQ
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Mach dir mal nen neues Projekt zum rumprobieren.
    Gehe nun mit der rechten Maustaste auf dein Projekt im Projektexplorer und füge eine neue Komponente "Dataset" hinzu.

    Es öffnet sich der Dataset-Designer. Aus der Toolbox kannst du eine Tabelle auf den Editor ziehen. Mit Strg+L kannst du dieser Tabelle "Spalten" hinzufügen. Im Eigenschaftenfenster vergibst du Namen, Datentypen usw. Die 1. Spalte sollte "ID" heißen und Integer sein. Die wird auch als Key festgelegt.

    Nun noch die Autoinkrement-Eigenschaft setzen. Dazu ein Doppelklick im Dataset-Designer, worauf sich das Codefenster öffnet. Hier das Initialized-Event es Dataset hinzufügen und Dataset.DeineTabelle.IDColumn.AutoInkrement=True einfügen.

    Nun öffnest du die Form und das "Datenquellenfenster". Hier findest du deine Tabelle wieder. Ziehe die einfach auf die Form. Es erstellt sich ein Datagridview und einige Komponenten.
    -DeinDataset als lokale Instanz deiner Datenbasis
    -DeineBindingsource, die das Dataset mit dem DatagridView verbindet
    -DeinBindingsourceNavigator der das Navigieren in en Datensätzen erlaubt (Den kannst du eigentlich erstma löschen.

    Wenn du jetzt debuggst, kannst du bereits Daten eintragen. Platziere nun je einen Button laden und Speichern und schreibe die Methoden (wie bereits beschrieben Readxml - Writexml) in die Klick-Events. Nun kannst du die Eingaben Laden und Speichern.

    Du hast also nach diesen par Schritten eine funktionierende Datenanwendung, die sich problemlos erweitern lässt.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    Vatter schrieb:

    Nun noch die Autoinkrement-Eigenschaft setzen. Dazu ein Doppelklick im Dataset-Designer, worauf sich das Codefenster öffnet. Hier das Initialized-Event es Dataset hinzufügen und Dataset.DeineTabelle.IDColumn.AutoInkrement=True einfügen.

    AutoIncrement stellt man doch viel einfacher in den Eigenschaften der ID-Column ein.