Récupérer la valeur séléctionnée dans une DropDownList
pigeon11
Messages postés16Date d'inscriptionsamedi 21 mars 2009StatutMembreDernière intervention 4 mai 2009
-
21 mars 2009 à 23:56
pigeon11
Messages postés16Date d'inscriptionsamedi 21 mars 2009StatutMembreDernière intervention 4 mai 2009
-
25 mars 2009 à 13:49
Bonsoir,
Dans ma page aspx, j'ai une DropDownList et un TextBox.
en selectionnant un élément dans la liste, je veux le récupérer dans le textbox.
j'ai déja testé en mettant autopostback= true et ça marche mais le problème c'est que
toute la page est rechargée avec autopostback=true.
Comment faire la meme chose en utilisant un code javascript.
quelqu'un peut me donner un exemple.
Bonjour,
dans le head de ma page aspx j'ai créé une fonction javascript
:
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 22 mars 2009 à 01:19
Bonsoir,
Il te faut différencier ce qui se passe côté serveur et côté client : selectedindexchanged se produit côté serveur, donc sur un postback (ou alors tu dois utiliser de l'ajax).
Quand ta page est créée pour être lue dans un navigateur internet, ton contrôle dropdownlist devient simplement un select html, dont la valeur ou le text peuvent être récupérés en js comme on le fait habituellement pour ce contrôle html.
Pour le faire en javascript, tu dois mettre sur ta dropdownlist un événement onchange. Si tu le fais directement dans ton code asp, tu auras un avertissement (mais ça marchera quand même). Tu peux ajouter sinon un événement onchange avec attributes.add.
Tu peux faire en javascript (le code peut être simplifié) :
function coco(k)
{
var x=document.getElementById("DropDownList1").options[k].text;
document.getElementById("TextBox1").value=x;
}
Et pour ajouter l'événement js sur ta dropdownlist, soit tu ajoutes : onchange="coco(this.selectedIndex)" (avec un avertissement dans Visual Studio), soit tu ajoutes un attribut sur ta balise dans le code vb :
Protected Sub DropDownList1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
DropDownList1.Attributes.Add("onchange", "coco(this.selectedIndex)")
End Sub
titeoe
Messages postés433Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 4 décembre 20091 23 mars 2009 à 08:25
Bonjour,
Tu peux utiliser la méthode précédente ou alors si tu disposes d'ajax dans ton application tu peux mettre ton textBox et ta dropdownlist dans un update panel.
pigeon11
Messages postés16Date d'inscriptionsamedi 21 mars 2009StatutMembreDernière intervention 4 mai 2009 23 mars 2009 à 13:41
Bonjour,
Merci pour votre réponse.
1- ça marche si je met le fonction javascript dans le onchange de la liste.
ça marche passi je mets :
Protected Sub DropDownList1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
DropDownList1.Attributes.Add("onchange", "coco(this.selectedIndex)")
End Sub
2- quand je selectionne un élément de la liste il s'affiche dans le textbox mais je veux aussi exécuter un code vbnet dans lequel je fais une recherche dans la bse de données suivant l'élément séléctionné.
C'est pas possible d'appeler un code vbnet dans une fonction javascript, c'est pourquoi je ne sais pas comment résoudre ce problème.
3- Dans ma page j'ai un bouton ajouter, et des textbox,
quand j'ajoute un nouvel élément dans la base de données, je veux que ma liste se
mette à jour automatiquement par le nouvel élément. voila ce que j'ai fait :
function ajouterdansliste(){
var newOption = document.createElement('<option value=' & document.getElementById("textbox1").value & '>');document.all.maliste.options.add(newOption);
quand je clique sur le bouton ajouter, un code en vbnet s'exécute pour insérer le nouvel élément dans la base de donner et en meme temps j'ai mis dans le onclick du bouton ajouter la fonction ajouterdansliste().
j'ai un message d'erreur me disant que la fonction n'appartient pas à la page page.aspx
Meme si j'appelle la fonction dans response.write ça marche pas. le nouvel élément n'apparait pas dans la liste.
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 23 mars 2009 à 14:02
Bonjour,
Dans ce cas, tu dois passer par de l'ajax, comme te le conseille titeoe. Tu pourras ainsi tout faire en vb, et ne plus écrire de javascript. Renseigne toi de ce côté.
Mais fais attention : dans ton point n° 3, tu veux renseigner ta base de données (donc côté serveur), mais en ajoutant la nouvelle entrée dans ta liste dans le code client ! Non, il faut que tu fasses tout côté serveur...
L'ajax permettra en tout cas de faire ce que tu veux faire : mais essaie aussi de bien faire la part entre ce qui peut se faire côté client et ce qui doit se faire côté serveur. Pour qu'un code vb s'exécute il faut nécessairement qu'il y ait postback intégral, ou partiel (par exemple avec de l'ajax), de ta page (ce code n'est pas exécuté dans le navigateur, comme l'est le javascript, mais sur le serveur).
Avant de passer par une solution ajax, tu devrais peut-être d'abord commencer par mettre à jour ta liste en te contentant du postback habituel (avec rafraîchissement complet). Puis, une fois que tu auras réglé ce problème, renseigne toi sur l'ajax pour ne rafraîchir ta page que partiellement.
GGtry
Vous n’avez pas trouvé la réponse que vous recherchez ?
titeoe
Messages postés433Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 4 décembre 20091 24 mars 2009 à 10:16
tout est dans les posts :
je cite ggtry : "Avant de passer par une solution ajax, tu devrais peut-être d'abord commencer par mettre à jour ta liste en te contentant du postback habituel (avec rafraîchissement complet)."
je cite titeoe : "mettre ton textBox et ta dropdownlist dans un update panel"
Si tu pars d'un projet déjà existant, tu devras modifier ton web.config (voir tuto, vidéo 2, je crois).
D'autre part, il ne suffit pas rigoureusement d'un updatepanel, il faut aussi un scriptmanager, et mettre tes contrôles dans un contenttemplate.
Pour t'aider une fois que tu auras correctement installé ajax, je t'envoie un exemple simple où je mets une ddl, un textbox et un button dans un updatepanel. Sur un buttonclick, je commande un insert (en ayant déjà défini l'insert command dans mon sqldatasource) avec comme paramètre le text de la textbox, qui ajoute ce texte à la table qui sert à remplir le ddl. Ce texte sera directement ajouté à la ddl.
Code vb
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If Trim(TextBox1.Text) <> "" Then
SqlDataSource1.InsertParameters(0).DefaultValue = TextBox1.Text
SqlDataSource1.Insert()
End If
End Sub
Code asp :
<form id="form1" runat="server">
<ContentTemplate>
</ContentTemplate>
Ta connection String %>"
SelectCommand="SELECT Nom, idNom FROM Ta_Table ORDER BY Nom" InsertCommand="INSERT INTO Ta_Table (Nom) VALUES (@Nom)">
pigeon11
Messages postés16Date d'inscriptionsamedi 21 mars 2009StatutMembreDernière intervention 4 mai 2009 24 mars 2009 à 17:32
Merci pour votre réponse.
quand je selectionne un élément de la liste il s'affiche dans le textbox en utilisant javascript. mais je veux aussi exécuter un code vbnet dans lequel je fais une recherche dans la base de données suivant l'élément séléctionné et afficher le résultat de recherche dans un autre textbox.
ggtry
Messages postés417Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention21 juillet 20101 24 mars 2009 à 18:14
rebonjour,
Oui, mais as-tu déjà fait l'opération précédente ? Il me semble que, dans ton cas, tu gagnerais à faire les choses pas à pas.
Mais bon, pour répondre quand même à ta question (et pour le redire) :
Si tu dois faire un retour serveur, n'utilise pas de javascript en même temps : c'est inutile puisque ce que tu fais en javascript, tu peux aussi bien le faire en vb dans ce cas (et c'est aussi pour cela que l'on t'a conseillé de passer par de l'ajax, puisque tu veux éviter l'apparence du rafraîchissement).
Pour remplir ton textbox avec le résultat de la recherche en bdd, utilise éventuellement un formview, dans lequel tu mettras ton textbox. Cela te permettra, en liant ton formview à un sqldatasource, par exemple, de remplir directement le textbox par l'asp, en utilisant comme paramètre la sélection de ta dropdownlist.