CodeIX
Messages postés60Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention28 novembre 2009
-
4 juil. 2009 à 09:21
CodeIX
Messages postés60Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention28 novembre 2009
-
4 juil. 2009 à 21:12
Bonjour, j'ai un probleme vraiment simple mais je suis incapable de figurer comment le regler.
J'explique, j'ai 3 tables nommer; "Auto, Legumes, Films". Je fait une function que lorsque le "SelectedItem" de mon Combobox change alors le nom du
SelectedItem est passer a une function.
Par la suite la fonction utilise le nom du SelectedItem pour afficher la table correspondante, exemple:SelectedItem est "Auto" donc la table attribuer sera "auto()".
Les 3 items de mon Combobox sont identiques au noms de mes tables.
Ce que j'essaie de faire est, exemple, SelectedItem=Auto() donc passer en parametre de type String a ma function afficheChoix() qui va ensuite entrer dans une boucle
"For" pour afficher les elements contenu dans auto() et les renvoyers dans un ListBox.
Mon probleme: Je ne sais pas comment faire en sorte que le selecteditem de combobox renvoyer a ma function devienne le nom de la table qui lui correspond, donc
pour le moment ma function essaie de travailler avec un type string et non pas ma table, j'espere que je suis claire.
Je sais comment faire cela en JavaScript mais pas certain en VB.NET. Je fonctionnais avec un "Select Case" avant de me decider a faire une function, j'ai
voulu faire cela pour eliminer une repetition inutile du code(dans le case).
Merci d'avance!
Code ou j'appel ma function:
------------------------------------------------------------------------------------------
Code:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbchoix.SelectedIndexChanged
Dim s As String
s = cbchoix.SelectedItem
afficheListe(s)
End Sub
------------------------------------------------------------------------------------------
Le Code actuel de ma function
------------------------------------------------------------------------------------------
Code:
Private Sub afficheListe(ByRef listeChoix As String)
Dim Auto() As String = {"Firebird", "Mustang", "Charger", "Challenger", "Corvette"}
Dim Legumes() As String = {"Carotte", "Navet", "Radis", "Choux Fleur", "Pomme de Terre"}
Dim Films() As String = {"Evil Dead", "Brain Dead", "Fredy", "Jason", "Resident Evil"}
Dim n As Integer
liste.Items.Clear()
For n = 0 To listeChoix.Count - 1
liste.Items.Add(listeChoix(n))
Next
End Sub
------------------------------------------------------------------------------------------
'Dim auto() As String = {"Firebird", "Mustang", "Charger", "Challenger", "Corvette"}
'Dim legumes() As String = {"Carotte", "Navet", "Radis", "Choux Fleur", "Pomme de Terre"}
'Dim films() As String = {"Evil Dead", "Brain Dead", "Fredy", "Jason", "Resident Evil"}
'Dim s As String
'Dim n As Integer = 0
's = cbchoix.SelectedItem
'Select Case s
' Case "Auto"
' liste.Items.Clear()
' For n = 0 To auto.Count - 1
' liste.Items.Add(auto(n))
' Next
' Case "Légumes"
' liste.Items.Clear()
' For n = 0 To legumes.Count - 1
' liste.Items.Add(legumes(n))
' Next
' Case "Films"
' liste.Items.Clear()
' For n = 0 To legumes.Count - 1
' liste.Items.Add(films(n))
' Next
'End Select
------------------------------------------------------------------------------------------
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 4 juil. 2009 à 11:41
salut,
difficile de voir exactement ce que tu veux faire
sur le principe OK (cf la suite), mais dans le code que tu indiques...
voici les erreurs :
dans l'évènment ~indexchanged, tu veux envoyer la chaine sélectionnée
ok, normal
mais regarde :
Private Sub ComboBox1_SelectedIndexChanged(...) Handles cbchoix.SelectedIndexChanged
s = cbchoix.SelectedItem
OK le handle est attaché au ComboBox1, mais il y a de quoi vite faire des erreurs
Private Sub afficheListe(ByRef listeChoix As String)
(...)
liste.Items.Clear()
For n = 0 To listeChoix.Count - 1
liste.Items.Add(listeChoix(n))
Next
tu remplies 3 tableaux mais tu veux remplir ta listbox depuis aucun des 3 ?
listechoix est ta chaine en paramètre, que tu utilises ensuite comme tableau (donc tableau de char)
pareil, côté pratique, une listbox nommée LISTE, pas extra pour s'y retrouver
ouvre un nouveau projet, sur la form pose une combobox et une listbox
(j'ai laissé les noms par défaut)
'ici tu déclares tes éléments en rapport avec la base de données
Public Sub New()
'ici tu ouvres la connexion à la base de donnée
End Sub
Public Sub Load(ByVal sTableName As String)
Me.Values.Clear()
Dim sql As String = "SELECT * FROM [" & sTableName & "];"
'ici tu fais ta requête vers la DB....
'puis tu remplies VALUES depuis le retour d'execution
'pour l'exemple on va remplir comme dans ton exemple : à la main
'valeurs
Dim sTempValues As String = String.Empty
Select Case sTableName
Case "Auto" : sTempValues = "Firebird;Mustang;Charger;Challenger;Corvette"
Case "Legumes" : sTempValues = "Carotte;Navet;Radis;Choux Fleur;Pomme de Terre"
Case "Films" : sTempValues = "Evil Dead;Brain Dead;Fredy;Jason;Resident Evil"
End Select
'boucle plus ou moins comme tu auras avec la db
For Each s As String In sTempValues.Split(";"c)
Me.Values.Add(s)
Next s
End Sub
Public Sub Dispose()
'ici tu fermes et détruit tous tes objets en rapport à la db
'et on va détruire la liste
Me.Values.Clear()
Me.Values = Nothing
End Sub
End Class
'*********************************************************
'*********************************************************
'form Form1.vb
'DANS TA FORM, CONTENANT UNE COMBOBOX1 ET UNE LISTBOX1
'*********************************************************
Public Class Form1
Private dbData As clsTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ComboBox1
.DropDownStyle = ComboBoxStyle.DropDownList
.Items.Add("Auto")
.Items.Add("Legumes")
.Items.Add("Films")
End With
dbData = New clsTable
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
dbData.Dispose()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
ListBox1.DataSource = Nothing
ListBox1.Items.Clear()
dbData.Load(ComboBox1.SelectedItem)
ListBox1.DataSource = dbData.Values
End Sub
End Class
CodeIX
Messages postés60Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention28 novembre 2009 4 juil. 2009 à 09:24
J'oubliais de dire que pour le moment tout ce que ca fait c'est d'afficher le nom de ma string(combobox.selecteditem) dans le listbox quand j'entre dans la boucle "for", et ca sort un peu comme ceci:
Si selecteditem est Auto alors dans le listbox on verra:
A
u
t
o
Si selecteditem est Legumes alors ce sera:
L
e
g
u
m
e
s
CodeIX
Messages postés60Date d'inscriptionjeudi 30 avril 2009StatutMembreDernière intervention28 novembre 2009 4 juil. 2009 à 20:36
Grr..... je deteste le fait qu'on ne peut pas editer nos propre message sur ce forum.
J'ai poster trop rapidement, en gros tu a repondu a deux de mes questions dont un concernant ma question plus haut, donc toute est regler.
Ce que je me demandais c'est si c'etais possible de faire en sorte que si le choix du combobox etais "Auto" alors il est automatquement relier a la table "auto()" dans la function pour que je puisse travailler avec elle.