Appeler du code-behing depuis javascript

Résolu
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 5 sept. 2007 à 11:11
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010 - 8 sept. 2007 à 18:18
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

cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
8 sept. 2007 à 18:18
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 :)
3
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
5 sept. 2007 à 21:03
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.
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
6 sept. 2007 à 01:19
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 .
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
7 sept. 2007 à 23:21
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...
0

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

Posez votre question
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
7 sept. 2007 à 23:26
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 :)
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
7 sept. 2007 à 23:55
Tu as l'event onblur :
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
7 sept. 2007 à 23:59
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
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
8 sept. 2007 à 00:34
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.
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
8 sept. 2007 à 00:37
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
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
8 sept. 2007 à 00:41
Y'a pas de click, c'est le onblur qui est appelé à la perte de focus du textbox.
0
cs_wally88 Messages postés 361 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 1 octobre 2010
8 sept. 2007 à 02:42
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.
0
Netlink Messages postés 139 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 12 juillet 2011
8 sept. 2007 à 14:14
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
0
Rejoignez-nous
A voir également