[Erledigt] Prüfen ob ListView-Eintrag schon drin ist

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    [Erledigt] Prüfen ob ListView-Eintrag schon drin ist

    Ich hab eine Form, diese besitzt eine ListView und einen TreeView. In dem TreeView kann man die Spalten der ListView verstecken bzw. sichtbar machen. Wenn man auf den Button "Update" klickt, dann werden die Spalten in der ListView aktualisiert. Nun habe ich aber das Problem das die Einträge dann nicht mehr stimmen. Nun hab ich aber das Problem das man alle Spalten verstecken bzw. sichtbar machen kann. Und jetzt füge ich die Einträge ein. Wie kann ich nun die Einträge einfügen mit allen Untereinträgen, so das der eintrag auch richtig eingetragen wird

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

    mikeb69 schrieb:

    Hallo Singu,

    kann dir nicht ganz folgen.
    Vielleicht wäre es besser, wenn du den Treeview immer wieder neu aufbaust, sobald sich im Listview etwas tut ?

    Gruss

    mikeb69
    Anders herum. Ich habe im TreeView alle Spalten aufgezählt. Hier mal der bisherige Code.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. Dim locListViewItem As New System.Windows.Forms.ListViewItem
    4. Dim locTreeViewNode As System.Windows.Forms.TreeNodeCollection = Nothing
    5. Me.ListView1.Columns.Clear()
    6. Me.ListView1.Items.Clear()
    7. locTreeViewNode = Me.TreeView1.Nodes
    8. 'MessageBox.Show(CType(locListViewItem.ToString, String))
    9. 'MessageBox.Show(locTreeViewNode.Item("Name").Checked)
    10. With Me.TreeView1.Nodes
    11. If (locTreeViewNode.Item("Name").Checked = True) Then
    12. 'MessageBox.Show(.Item("Name").Text & " markiert")
    13. With Me.ListView1.Columns.Add("Name")
    14. .Name = "chName"
    15. .Text = "Name"
    16. End With
    17. End If
    18. If (locTreeViewNode.Item("Beschreibung").Checked = True) Then
    19. 'MessageBox.Show(.Item("Beschreibung").Text & " markiert")
    20. With Me.ListView1.Columns.Add("Beschreibung")
    21. .Name = "chBeschreibung"
    22. .Text = "Beschreibung"
    23. End With
    24. End If
    25. If (locTreeViewNode.Item("Datum").Checked = True) Then
    26. 'MessageBox.Show(.Item("Datum").Text & " markiert")
    27. With Me.ListView1.Columns.Add("Datum")
    28. .Name = "chDatum"
    29. .Text = "Datum"
    30. End With
    31. End If
    32. If (locTreeViewNode.Item("Installiert").Checked = True) Then
    33. 'MessageBox.Show(.Item("Installiert").Text & " markiert")
    34. With Me.ListView1.Columns.Add("Installiert")
    35. .Name = "chInstalliert"
    36. .Text = "Installiert"
    37. End With
    38. End If
    39. If (locTreeViewNode.Item("Heruntergeladen").Checked = True) Then
    40. 'MessageBox.Show(.Item("Heruntergeladen").Text & " markiert")
    41. With Me.ListView1.Columns.Add("Heruntergeladen")
    42. .Name = "chHeruntergeladen"
    43. .Text = "Heruntergeladen"
    44. End With
    45. End If
    46. 'locListViewItem = Me.ListView1.Items.Add("Test")
    47. 'MessageBox.Show(CType(locListViewItem.ToString, String))
    48. If (locTreeViewNode.Item("Name").Checked = True) Then
    49. If (locListViewItem.ToString.StartsWith("ListViewItem:") = True) Then
    50. '
    51. Else
    52. MessageBox.Show("Fertig")
    53. locListViewItem = Me.ListView1.Items.Add("Test")
    54. End If
    55. End If
    56. If (locTreeViewNode.Item("Beschreibung").Checked = True) Then
    57. If (locListViewItem.ToString.StartsWith("ListViewItem:") = True) Then
    58. locListViewItem.SubItems.Add("Dies ist ein Test")
    59. Else
    60. locListViewItem = Me.ListView1.Items.Add("Dies ist ein Test")
    61. End If
    62. End If
    63. If (locTreeViewNode.Item("Datum").Checked = True) Then
    64. If (locListViewItem.ToString.StartsWith("ListViewItem:") = True) Then
    65. locListViewItem.SubItems.Add("26.09.09")
    66. Else
    67. locListViewItem = Me.ListView1.Items.Add("26.09.09")
    68. End If
    69. End If
    70. If (locTreeViewNode.Item("Installiert").Checked = True) Then
    71. If (locListViewItem.ToString.StartsWith("ListViewItem:") = True) Then
    72. locListViewItem.SubItems.Add("Ja")
    73. Else
    74. locListViewItem = Me.ListView1.Items.Add("Ja")
    75. End If
    76. End If
    77. If (locTreeViewNode.Item("Heruntergeladen").Checked = True) Then
    78. If (locListViewItem.ToString.StartsWith("ListViewItem:") = True) Then
    79. locListViewItem.SubItems.Add("Ja")
    80. Else
    81. locListViewItem = Me.ListView1.Items.Add("Ja")
    82. End If
    83. End If
    84. End With
    85. End Sub
    86. End Class


    Kann mir jemand bei dem Problem weiterhelfen.

    Keine Doppelposts bitte.
    Bearbeiten Funktion verwenden.
    Gruss
    mikeb69

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

    Mono schrieb:

    Ich versteh dein Problem leider auch nicht :)
    Mein Problem ist im ersten Beitrag sehr genau erklärt.

    Ich erkläre dir es nochmal, also ich habe eine ListView die verschiedene Spalten besitzt. Die Spalten sind wiederrum in einer TreeView aufgelistet. In der TreeView kann ich festlegen, welche Spalten in der ListView aktiv sind. Wenn ich dann auf den Button "Update" klicke, dann wird geprüft welche Spaltennamen in der TreeView markiert sind. Wenn dann z.B. Name markiert ist, dann wird die Spalte Name in der ListView erstellt. Anschließend werden die Einträge wieder eingefügt.
    Ich glaube so langsam habe ich begriffen was du meinst,
    ich würde statt der Listview ein Datagridview nehmen.

    Die hat eine angenehme Eigenschaft für Spalten:

    VB.NET-Quellcode

    1. DataGridView1.Columns(0).Visible = False ' oder true
    2. 'alternativ:
    3. DataGridView1.Columns("Column1").Visible = False 'oder true


    gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!

    Mono schrieb:

    Ich glaube so langsam habe ich begriffen was du meinst,
    ich würde statt der Listview ein Datagridview nehmen.

    Die hat eine angenehme Eigenschaft für Spalten:

    VB.NET-Quellcode

    1. DataGridView1.Columns(0).Visible = False ' oder true
    2. 'alternativ:
    3. DataGridView1.Columns("Column1").Visible = False 'oder true


    gruss mono
    Also das Programm, indem diese Funktion nachher laufen soll, gibt es schon und das Programm verwendet mehrere ListViews. Und ich möchte ungern nochmal alles umändern.

    Edit: Ich hab noch vergessen zu schreiben, das die ListView auch Checkboxes hat um die einzelnen Einträge zu markieren.
    Also ich habe gestern nochmal dran herumprobiert und wenn ich die erste Spalte "Name" immer anzeige dann funktioniert es ja auch. Dann kann ich nämlich abfragen welche Spalten-Namen in der TreeView markiert sind und könnte dann mit SubItems arbeiten. Aber ich möchte auch die Spalte "Name" zur Auswahl stehen haben.

    Weiß keiner ne Lösung?