Appeler du code-behing depuis javascript [Résolu]

Signaler
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010
-
Bonjour,
Je souhaiterais appeler une fonction se trouvant en code behind lors d'un evenement javascript.

J'aimerais en faite que lorsque je rempli ma textbox, la dropdownlist charge les elements d'une base de donnée par rapport au debut
du chiffre.

Y a bien l'événement textchanged, mais il faut sortir de la textbox pour que l'événement se declenche.

Si quelqu'un peut m'aider.

Merci.

12 réponses

Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Yeah c'est bon :D jsuis heureux.

// ma textbox ou l on rentre le code postal et la dropdown qui recevra les codes postaux
// et a chaque fois que l'on relache une touche lorsqu on saisie on appel la fonction cherche.

<asp:TextBox
ID="cp"
runat="server"
onkeyup="chercher(this);"
MaxLength="5"></asp:TextBox>

<br
/>
<asp:DropDownList
ID="DropDownList2"
runat="server"
Width="180px"
AutoPostBack="True" Enabled="False"></asp:DropDownList>

// fonction javascript permettant de verifié le nombre de caractere que contient la textbox, si c'est egale a 5 alors on lance un postback








function
chercher(val)



      if
(val.value.length == 5)
      {
            __doPostBack(

''
,

''
); 
        }
}

// fonction en code behind pour charger les villes par rapport a la textbox

public
SqlDataReader chargerdonneeVille()
{

string ConnnectionStr =
ConfigurationManager.AppSettings[
"connexion"].ToString();

SqlConnection sqlCon =
new
SqlConnection();
sqlCon.ConnectionString = ConnnectionStr;

string req =
"select distinct ville from code_postaux where cp like '" + cp.Text+
"%' order by ville ";

SqlCommand sqlCom =
new
SqlCommand(req, sqlCon);
sqlCon.Open();

SqlDataReader result = sqlCom.ExecuteReader(
CommandBehavior.CloseConnection);

return result;
}





Dans le Page_Load, on regarde si il y a eu un postback, si oui on met la dropdown utilisable(enable = true) et on charge les villes





if
(IsPostBack)
{
DropDownList2.Enabled =

true
;
DropDownList2.DataSource = chargerdonneeVille();
DropDownList2.DataTextField =

"ville"
;
DropDownList2.DataValueField =

"ville"
;
DropDownList2.DataBind();
DropDownList2.Items.Insert(0,

"Sélectionner"
);
}Merci de vous etre interressé a mon sujet :)
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Le plus compliqué : Se servir de l'objet XmlHttpRequest (xhr) en asynchrone sur le modèle d'ajax. On récupère une réponse en arrière plan sans recharger la page.

Le plus simple : remplir la listBox entièrement au form_load() et avec javascript, la retrier pendant la frappe.
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Merci pour la reponse pour se qui est de la plus vaut mieux pas ya 39000 lignes :) sa risque d etre long a charger nan ?
Pour la plus compliqué de ce que je connais d ajax c'est "Atlas" avec les updatepanel mais meme avec l update panel je sais pas comment faire :s .
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Bonsoir,

y'a surement d'autres critères que tu peux proposer à l'utilisateur, pour réduire le nombre de lignes total avant le chargement de la page

Mais si j'ai bien compris, tu veux faire un postback à chaque caractères entrés dans le textBox ! Si c'est ça, ce n'est pas vraiment une bonne idée.

L'utilisateur entre le critère puis il clique sur 1 boutton 'rechercher', ce qui fait un submit et renvoi les résultats (avec 1 seul posback.)
Le javascript ne ferait que valider le critère avant le submit.

Bonne continuation...
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

en faite ce sont les code postaux donc quand le 5 chiffres sont rentré la dropdonw doit recevoir les ville par rapport au code.
mais comment demarrer le postback quand les 5 chiffres sont rentrés, c'ets plutot sa la questions donc avec textchanged je pensais que sa chargerais a chaque fois qu on rajoute une lettre mais non c'est juste quand la text perd le focus.
Merci de t interessé a mon soucis :)
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Tu as l'event onblur :
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

onblur est pour appeler javascript comment je charge ma base de donnéee depuis javascript ?  a moin que je mette mes 39000 enregistrement dans ma dropdown a la base mais ca va etre lourd :s 
si ta une idée :o)
Merci
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Grace à javascript, dans la fonction 'handler();' de l'event onblur, tu récupères la valeur du textBox :
var param = document.getElementById('txtCode').value;

Puis vient l'interet du submit, tu vas ressoumettre la page en cours avec un param de requete en plus :
'URL_thisPage.aspx' + '?' + param
puis :
document.navigate(newUrl);
ou window.location.href = newUrl;
 (ou un truc du genre)

Dans le onload() de ta page rechargée, tu récupères le param de requete.
Request.QueryString("param")

Si il est à null, c'est un submit normal, si il contient une valeur, tu remplis tes villes grace au code 'param'

Si d'autres param sont déjà entrés dans la form, il faut les récupérer aussi et les réaffecter.

La page se recharge avec la liste selon le code saisi.

Là, c'est plutot ce que l'on fait en asp 1. avec .net, il y a certainement plus simple pour forcer un submit avec l'url modifiée.
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

Oki mais le but etais de ne pas cliquer sur un boutton, j'ai vue que sa se fesais mais en php je me suis dis qu on devais surmeent pouvoir le faire en asp.net. Le clique boutton ne m'arrange pas trop. Enfin si j'ai pas le choix :s .
Merci beaucoup
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
20
Y'a pas de click, c'est le onblur qui est appelé à la perte de focus du textbox.
Messages postés
361
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
1 octobre 2010

onblur reviens au textchanged alors :s ca va pas non plus il faut que l evenement se charge quand le 5 chiffre est rentré :).
sans faire de pub sa se trouve sur lovbox.eu lorsqu on rempli sont profil :) me faut la meme chose.
Messages postés
139
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
12 juillet 2011

Salut,

Je viens de tomber sur ceci :
http://www.toutjavascript.com/main/gorun.php3?s=listekeyhttp://www.toutjavascript.com/main/gorun.php3?s=listekey







Peut-être qu'en fouillant dans la source javascript tu arriveras à l'adapter à ton cas




@ bientôt, Matt