2016-11-10 4 views
0

Ich habe ein Listview erstellt und bevölkert mit Datentabelle ..
Alle funktionierte gut ...
Jetzt habe ich Checkbox für alle Elemente .. Nun möchte Ich mag, wenn der Wert der letzten Spalte Wenn ein Artikel "wahr" ist, wird das Kontrollkästchen desselben Artikels aktiviert.Listview: Holt Daten aus ausgewählten Artikel

Ich habe versucht, den folgenden Code ...

If LstViewHelp.Items.Count <> 0 Then 
    For Each item As ListViewItem In LstViewHelp.Items 
     If LstViewHelp.FocusedItem.SubItems(10).Text = "True" Then 
      LstViewHelp.FocusedItem.Checked = True 
     End If 
    Next 
End If 

ich folgende Fehlerobjektverweis bekommen wird auf eine Instanz nicht gesetzt.
Versucht viele Links, aber keine richtige Lösung gefunden ...!

+1

Mit 'DataGridView' für eine solche Forderung wäre verwenden viel besser. Sie können die Datentabelle einfach 'DataSource' von' DataGridView' zuweisen und 'CheckBox' für boolesche Spalten anzeigen. –

+0

Ihre Iteratorvariable ist 'item' Verwendung anstelle von' FocusedItem', wenn Sie auf alle Elemente einwirken wollen. Ein 'DataGridView' wäre passender – Plutonix

+0

Eigentlich benutze ich Listview wieder, ich habe viele Dinge wie Suchdatensätze erstellt und alles in dieser Form und benutze dies aus verschiedenen Formen ... Es ist wie ein Hilfeformular für andere Formulare ... Ich lese das Internet und einige für datagridview vorgeschlagen, aber das Problem ist, ich muss die gleichen langen Codes für DataGridView schreiben ... Hilfe in Listview wäre eine bessere Option für mich .... @RezaAghaei – bonny

Antwort

0

Sie können alle ausgewählten Index wie ListView.SelectedIndexCollection mit SelectedIndices erhalten. Fügen Sie ForEach Schleife für ausgewählte Indizes hinzu und bearbeiten Sie Ihr SubItem.

Dim indexes As ListView.SelectedIndexCollection = Me.ListViewHelp.SelectedIndices 

For Each index In indexes 
    If Me.ListViewHelp.Items(index).SubItems(10).Text = "True" Then 
     LstViewHelp.Items(index).Checked = True 
    End If 

Next 

Und wenn Sie alle Einzelteile überprüfen möchten, können Sie for Schleife

For i = 0 To Me.ListViewHelp.Items.Count - 1 

      If Me.ListViewHelp.Items(i).SubItems(10).Text = "True" Then 
      LstViewHelp.Items(i).Checked = True 
      End If 
Next 
+0

Okay, der Trigger tritt nicht in die Schleife .. Ich habe mehr als 100 Datensätze in Listview. – bonny

+0

100 ausgewählte Aufzeichnung? Indizes ist eine Sammlung ausgewählter Indizes. Sie möchten es auf allen Listenansichten tun? –

+0

nicht ausgewählte Datensätze, nur insgesamt Artikel ist 100 ca. mit jedem Element von 10 Spalte ... Meine Multiselect ist falsch und fullrowselect ist wahr – bonny

Verwandte Themen