2013-05-15 12 views
1

Je dois sélectionner dynamiquement un élément dans une liste en fonction de ce qui a été sélectionné précédemment.VB.NET: Comment sélectionner dynamiquement un élément de vue liste?

Les éléments qui ont été sélectionnés dans le passé sont extraits d'une base de données et ajoutés à un Arraylist. Ces éléments doivent ensuite être sélectionnés parmi un certain nombre de listes différentes. Faire ceci par index comme si listRef1.Items(2).Checked = True n'est aucun problème mais je dois le faire par le texte d'article, c'est-à-dire l'une des chaînes dans le tableau.

Jusqu'à présent, j'ai ceci:

For i As Integer = 0 To refsArr.Count - 1 
    'find the correct category id 
    Dim cmdRefCat As New SqlCommand("SELECT RefID from ReferencesListTable WHERE   RefName = '" & refsArr(i) & "'", conn) 
    Dim refid As Integer = cmdRefCat.ExecuteScalar() 
    If refid = 1 Then 
     listRef1.Items(refsArr(i)).Checked = True 
    ElseIf refid = 2 Then 
     listRef2.Items(refsArr(i)).Selected = True 
     listRef2.Select() 
    ElseIf refid = 3 Then 
     listRef3.Items.Item(refsArr(i)).Selected = True 
     listRef2.Select() 
    ElseIf refid = 4 Then 
     listRef4.Items.Item(refsArr(i)).Selected = True 
    End If 
Next 

Quelqu'un at-il des idées à ce sujet? Merci.

Répondre

5

Vous devrez parcourir chaque élément dans la liste listview:

For I as Integer = 0 to ListView.Items.Count - 1 Do 
    If ListView.Items(i).Text = "Text" then 
     ListView.Items(i).Selected = true 
    End If 
End For 
1

Vous pouvez essayer cette ...

For i As Integer = 0 To refsArr.Count - 1 
    'find the correct category id 
    Dim cmdRefCat As New SqlCommand("SELECT RefID from ReferencesListTable WHERE   RefName = '" & refsArr(i) & "'", conn) 
    Dim refid As Integer = cmdRefCat.ExecuteScalar() 
    Select case refid 
     case 1 
     CheckIt(refsArr(i),listRef1) 
     case 2 
     CheckIt(refsArr(i),listRef2) 
     case 3 
     CheckIt(refsArr(i),listRef3) 
     case 4 
     CheckIt(refsArr(i),listRef4) 
    End Select 
Next 

Et Sous CheckIt

Sub CheckIt(ByVal sRef as String, ByRef lvw as Listview) 
    Dim x as Integer 

    For x = 0 to lvw.Items.Count - 1 
     If lvw.Items(x).Text = sRef then 
      lvw.Items(x).Selected = true 
      exit for '-- if only 1 record 
     End If 
    Next 
End Sub 
+0

Itère à la fois la vue de la liste et le tableau et la comparaison de chaque fait l'affaire, mais cela est une belle solution. Merci! – redned

0

Le code pour sélectionner un élément dynamiquement à partir du contrôle listview peut être comme suit pour vb.net.

  • Soit lvwomominiChair1 le nom du contrôle listview.
  • Définissez sa propriété fullrowselect sur true.

Le code sélectionnera le texte dans la première colonne du contrôle ListView.

Private Sub lvwomominiChair1_Click(sender As Object,e As EventArgs) Handles lvwomominiChair1.Click 
    Dim lvwitem as ListViewItem 
    lvwitem = lvwomominiChair1.SelectedItems.Item(0) 
    MsgBox("Selected item is " + lvwitem.Text) 
End Sub 

Il peut y avoir des situations où nous avons besoin pour obtenir tous les éléments d'une rangée d'une control.The ListView code suivant peut être utilisé pour la purpose.It suppose qu'il y a cinq colonnes de données dans une première et sont du type de données texte. Ceci peut être fait avec une boucle For..Next comme suit. Let 0,1,2,3 et 4 sont les cinq index de colonne.

Private Sub lvwomominiChair1_Click(sender As Object,e As EventArgs) Handles lvwomominiChair1.Click 
     Dim i As Int32 
     Dim str As String 
     str ="" 
     For i =0 To 4 
     str = str + " " + lvwomominiChair1.SelectedItems(0).SubItems(i).Text 
     Next 
     MsgBox("Selected items of the five columns of the row are " + str) 
End Sub 
0

Ou vous pouvez faire cela, fonctionne parfaitement pour moi:

ListView.Items(0).Selected = True 

ListView.Select() 
Questions connexes