Recuperer l'info d'une listeview avec checkbox

cs_lanana Messages postés 4 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 11 juillet 2013 - 11 juil. 2013 à 11:01
 Utilisateur anonyme - 11 juil. 2013 à 17:24
Bonjour,
Je débute en vb.net et je bloque sur un truc.
voilà j'ai une listview donc le contenu est une liste de département,j'aimerai pouvoir afficher la liste des entités de correspondante à chaque département à la sélection de la case à cocher(ma listview a des cases à cocher.)
mais j'ai l'erreur suivante:

L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : index

J'ai fait une function qui prend la liste de mes departements,l'item que je vais selectionner,et la liste de nom correspondante
Public Function lister(ByVal listdept As ArrayList, ByVal objrecherche As String, ByVal listnom As ArrayList) As ArrayList

MessageBox.Show("je rentre dans la fonction lister dpt", objrecherche)
' ArrayList qui va contenir le résultat retourné par la recherche
Dim listent As New ArrayList

Try

For i As Integer = 0 To listEntite.Count - 1

If listdept(i).indexof(objrecherche) <> -1 Then
listent.Add(i)
''listent.Add(listEntite(i))

End If
Next

Catch exc As Exception
MessageBox.Show(exc.Message)
End Try

Return listent

End Function

7 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 juil. 2013 à 12:51
Bonjour,

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

Sur quelle ligne l'erreur ?
Quelles sont les valeurs des éléments de la ligne (et leur dimensionnement) ?

Note, tu fais une boucle sur "listEntite", mais tu utilises "listdept"

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
cs_lanana Messages postés 4 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 11 juillet 2013
11 juil. 2013 à 13:33
Ok!merci pour les consignes!
je ne fais pas de boucle sur listeentite en fait c'est commenté c'est un test que je faisais.

en fait comme cela apparait dans la signature de ma fonction j'ai des collections et l'item voulu est de type string

Public Function lister(ByVal listdept As ArrayList, ByVal objrecherche As String, ByVal listnom As ArrayList) As ArrayList 
For i As Integer = 0 To listEntite.Count - 1

If listdept(i).indexof(objrecherche) <> -1 Then //je recherche l'objet cliqué dans ma liste 
listent.Add(i)
//l'erreur est là

End If
Next 


Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
Dim indice As ArrayList
                Dim i As Integer = 0
                'Dim objitem As ListViewItem
                indice = lister(listdept(), ListView1.SelectedItems(0).Text, listnom())
                For Each i In indice
                    Me.ListView2.Items.Add(listnom(i))
               Next
end class


j'espère que ça ira.
0
cs_lanana Messages postés 4 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 11 juillet 2013
11 juil. 2013 à 13:34
Bonjour,
J'ai un treeview avec des caches à cocher j'aimerais savoir en vb.net comment cocher un seul noeud à la fois.
cordialement
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
11 juil. 2013 à 13:42
Bonjour,

For i As Integer = 0 To listEntite.Count - 1
If listdept(i).indexof(objrecherche) <> -1 Then 


Boucle sur "listEntite", puis utilisation de "listdept".

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
11 juil. 2013 à 13:51
Bonjour
Même remarque que NHenry que je salue ! et j'ai pas vu son post

For i As Integer = 0 To listEntite.Count - 1

If listdept(i).indexof(objrecherche) <> -1 Then //je recherche l'objet cliqué dans ma liste
listent.Add(i)

de plus Listent.Add(i) : i est un Integer et non une chaine de caractères
Op
tion explicit et Option Strict sur ON dans les propriétés du projet éviterait ces anomalies 


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
cs_lanana Messages postés 4 Date d'inscription jeudi 11 juillet 2013 Statut Membre Dernière intervention 11 juillet 2013
11 juil. 2013 à 13:55
merci pour ta reponse.mais comment ça?desolé y'avait une petite erreur c'est plutot listdept et pas listentite et aussi listdept et listnom ce sont des fonctions qui me renvoient des arraylist.

Public Function lister(ByVal listdept As ArrayList, ByVal objrecherche As String, ByVal listnom As ArrayList) As ArrayList 
For i As Integer = 0 To listdept.Count - 1

If listdept(i).indexof(objrecherche) <> -1 Then //je recherche l'objet cliqué dans ma liste 
listent.Add(i)
//l'erreur est là

End If
Next


encore merci pour ton aide
0
Utilisateur anonyme
11 juil. 2013 à 17:24
Bonjour,

Je regarde tout cela et je n'y comprends absolument rien.

1) Le ListView a sa propre collection d'items selectionnées, collection sur laquelle tu peux boucler comme pour toute autre collection. Cette collection hérite de toutes les caractéristiques d'une collection et/ou implante ses propres caractéristiques particuliètres. Donc, ton ArrayList, sauf vice d'information suffisante dans la question, est inutile.

2) À chaque Item d'un ListView (tes départements), tu peux lui adjoindre une collection de subitems lui correspondant. Collection, sur laquelle tu peux boucler, comme pour toute autre collection

3) Une fois que tu as cliqué un item dans ton ListView, tu peux facilement retrouver, dans le ListView l'item (le département) (dé)sélectionné et appliquer le traitement approprié.

Donc, désolé de débarquer de ton histoire.
0
Rejoignez-nous