saritanet
Messages postés32Date d'inscriptionsamedi 2 août 2008StatutMembreDernière intervention 5 septembre 2008
-
6 août 2008 à 17:11
saritanet
Messages postés32Date d'inscriptionsamedi 2 août 2008StatutMembreDernière intervention 5 septembre 2008
-
9 août 2008 à 20:24
Bonjour,
Dans mon application , j'ai deux DropDownLists. Mon obectif est de choisir une donnée d'un premier DropDownList, et selon cette donnée, le 2 eme DropDownList doit être en relation à cette dernière. Par exemple chaque service a plusieurs ateliers, donc lorsque j choisis un service donnée, dans le 2ème DropDownList je ne dois avoir que les ateliers liés à ce dernier service et pas tous les ateliers qu'existent dans la base de données. Pour ce faire, j'ai lié le 1 er DropDownList normalement à la base de donnée, et le 2eme j'ai voulu le faire avc des requêtes Sql paramètrés, donc j'ai cliqué 2 fois sur dropDownList2 et j'ai écri le code suivant:
Protected
Sub DropDownList2_SelectedIndexChanged(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles DropDownList1.SelectedIndexChanged
maRequete2 =
" select nom_atelier from atelier where code_service in (select code_service from service where service= @service)"
myCommand2 =
New SqlCommand(maRequete2, maConnexionSQLsrv)
With myCommand2.Parameters
.Add(
New SqlParameter(
"@service", SqlDbType.Char, 50))
End
With
With myCommand2
.Parameters(
"@service").Value =
Me.DropDownList1.Text
End
With
Try
myCommand2.Connection.Open()
myCommand2.ExecuteNonQuery()
myCommand2.Connection.Close()
Catch ex
As Exception
Me.Label1.Text =
"prb ds la selection de l'atelier "
End
Try
End
Sub
Le problème c'est que dans le navigateur, je trouve DropDowList2 vide. Veuillez me dire comment je pourrai me procéder pour réaliser cela et merci d'avance pour votre aide
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 9 août 2008 à 16:05
Bonjour,
1/ Si je comprends bien l'organisation de tes tables, ta requête n° 2 marcherait sans doute, mais il y a plus simple.
Dans et dans ce cas ou j mettrai que la valeur de service est dropdownlist1? "), la réponse est dans le selectparameter du sqldatasource2 de ta ddl2, où tu as :
C'est précisément cette partie qui dit : a/ que la source de ddl2 est ta ddl1, b/ que le nom de la variable (i.e; @code dans la requête) est "code", et c/ que cette variable est remplie par la valeur sélectionnée.
Sinon, tu peux aussi garder ta requête n° 2 en mettant dans DataValueField de ta ddl1 "service" et dans le controlparameter de la deuxième sqldatasource Name="service" (mais encore une fois, je te conseille plutôt de passer par la requête sql la plus simple, et de jouer sur DataValueField).
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 6 août 2008 à 21:01
Salut,
1 --> Tu ne fais pas intervenir ta deuxieme ddl dans le code
2 --> un select se lit avec un executereader et non un execute non query
3 --> elle est comment ta collection sortie de ta base
4 --> Le close connection met le dans un finally c'est plus propre
Ta requete fonctionne telle en mode debug bon parametre qui arrive
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 6 août 2008 à 21:11
Bonsoir,
Si ta dropdownlist2 n'est liée que lors du selectedindexchanged de la ddl1, il est normal qu'elle soit vide au départ, puisqu'aucun choix n'a été fait dans ddl1.
Mais tu peux faire beaucoup plus simplement, en liant directement ta ddl2 à l'item sélectionné dans ta ddl1, sans aucun codebehind. Il suffit que la clause la variable de la clause where de ddl2 soit liée à la sélection dans ddl1 (par défaut, au départ, ce sera la première valeur affichée dans ddl1). Tu peux faire par exemple :
<SelectParameters>
</SelectParameters>
nb. je mets "ceci" pour la ddl1 et "cela" pour la ddl2 donc, dans ton exemple, 1/ service et 2/ atelier.
La deuxième requête pourra plutôt être du style
SELECT IDCela, IDCeci, Cela FROM TableCela WHERE (IDCeci = @IDCeci) ORDER BY Cela
saritanet
Messages postés32Date d'inscriptionsamedi 2 août 2008StatutMembreDernière intervention 5 septembre 2008 9 août 2008 à 15:04
Le 1er ddl appartient à la procédure du 2eme ddl, en tt cas j pense que ça va marcher avec la méthode de ggtry, sauf que j'ai pas su comment insérer la 2eme requête, en fait j'ai pas su est ce qu'il faut faire
select nom_atelier from atelier where code_service in (select code_service from service where service= ' "DropDownList1" ')
ou bien:
select nom_atelier from atelier where code_service in (select code_service from service where service= @service)
et dans ce cas ou j mettrai que la valeur de service est dropdownlist1?
Merci pour votre aide
[mailto:S@R
S@R
]
@
Vous n’avez pas trouvé la réponse que vous recherchez ?