PostBack & Ajax

cs_maxame Messages postés 4 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 19 juin 2006 - 15 juin 2006 à 16:54
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 20 juin 2006 à 11:07
Bonjour,


J'ai un petit soucis sur une page asp.net 1.1.


J'ai un tri automatique de valeures dans mes combobs faites en AJAX,
seulement lorsque j'appuis sur un bouton de validation qui doit me
redirigé en effectuant un post back. mes combos retrouve les valeurs
initiales. si je reommence, une deuxiement fois, je garde les bonnes
valeures dans le post back.


je trouve ca étrange.


A saovir que mes script Ajax sont appelés sur le onchange des dropdownlist.

Si quelqun peut m'expliquer comment réagissent les pages gereées en AJAX sur un postBack..


Merci d'avance.

9 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 juin 2006 à 21:05
Bonjour,

Si tu ne veux pas t'embeter a gerer tout ca et surtout si tu ne connais pas parfaitement le fonctionnement de JavaScript & postback, je te conseille grandement de t'interesser à atlas ce qui te simplifieras grandement les choses :-)
>> http://atlas.asp.net/

<hr />Cyril - MVS - MCP
0
cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
16 juin 2006 à 10:17
Ca serait peut-être plus simple de faire le tri sur le serveur plutôt que de le faire sur le poste client ?

Poppyto
Cours de basse gratuits avec vidéos et ralentis 
Cours de guitare gratuits avec vidéos et ralentis 


[</body
]
0
preti Messages postés 53 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 7 septembre 2006
16 juin 2006 à 15:02
Le but d'ajax c'est de poster seulement les infos que tu désires et de modifier juste ce que tu veux modifier. Donc sur l'événement de ton bouton tu appelles ta fonction javascript qui appelle ta fonction Ajax puis retourne la liste modifiée. Jette un oeil là pour plus d'infos http://www.codersource.net/published/view/300/dhtml_tooltips_using_ajax_net_library.aspx
0
cs_maxame Messages postés 4 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 11:03
je sais pas si je me suis bien fait comprendre,
j'ai pas de probleme avec le tri des mes combos, je veux juste pouvoir garder mes indexs selectionnés sur le clic de mon boutons pour pouvoir récuperer les valeurs.
Seulement sur le premier clic j'ai mes combos que reviennnent au départ, cad non triées, à l'index "0", comme à la premire visite.

Pour Jesusonline : il me semble qu'Atlas marche avec le framework 2.0.

Max
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 juin 2006 à 11:22
Oups, j'avais pas vu que tu bossais en .net 1.1. Oui Atlas fonctionne avec le framework 2.0 qui est sortie depuis novembre 2005 ... si tu as la possibilité de migrer penses y sérieusement ca te fera gagner beaucoup de temps :-)

Sinon pour répondre à ta question, il faut que tu créer un champ caché dans lequel tu serialises coté client le tri, puis coté serveur tu recuperes ce champ caché tu le deserialises et définit l'ordre dans tes combos.

PS : je ne vois aucun rapport avec Ajax ... seulement avec du JavaScript ...

<hr />Cyril - MVS - MCP
0
cs_maxame Messages postés 4 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 12:23
je trie mes combos en Ajax sur le changement d'index de mes combos mères.

tout va bien jusque la, ca coince sur le clic de mon bouton sensé recuperé les valeures.
Je ne vois pas pourquoi mes combos se rechargerais à ce moment la. Je ne fais pas de chargement sur le POST BACk dans mon code behind, et mes fonction JS ne sont pas appellées non plus. Je me demande tout simplement d'ou vient ce rechargement.
D'ou le sujet de mon post initial ou je me demande comment reagis un control chargé en AJAX sur un post-Back.

Maxime
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 juin 2006 à 13:22
Je ne comprend pas pourquoi tu utilises le terme Ajax, ou utilises tu de l'ajax dans ce que tu dis ?

Pour ce qui est du rechargement, c'est normal, comment voudrais tu que le serveur lors d'un postback connaisse la valeur de ton formulaire coté client ? il faut pour cela faire un champ caché et rajouté la notion de viewstate .... :-)

<hr />Cyril - MVS - MCP
0
cs_maxame Messages postés 4 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 19 juin 2006
19 juin 2006 à 14:34
j'ai 3 combo : pays/region/ville

lorsque je chois un pays, je fais une requete en Ajax vers le serveur qui me renvois la combos région+ville avec les valeurs correspondant au pays.idem lorsque je choisis une region.

au chargement de la page, les combos contiennent tous les pays, les regions et les villes de ma base.

sur mon bouton valider je veux récuperé les valeurs selectionnées. ce que je comprends pas c'est que

- lorsque je fais une premiere selection+ valider ! les combos reviennent au point de départ sur l'index 0.

- deuxieme selection + valider, les combos gardent mes valeurs, ce que je veux en sorte :)

voici ma source (pour la combo region)

'combo DdlRegion sur mapage.aspx




'fonction JS sur fichier Ajax.js

function filtre(type,value,cbo) // fonction filtre sur onchange des combos
{
if(type=='region')
{
charge_regions(value,cbo);// rechargement de la combo region
}
else if(type=='dest')
{
charge_dest('r',value,cbo);// rechargement de la combo destination
}
return true;
}


function charge_regions(pays,cbo)//(pays=id du pays,cbo=idhtml de la combo)
{
getXhr(); // crée un objet xhr si possible
var type='r';//combo a recharger (parametrede la page aspx)
if(xhr != null)
{
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState 4 && xhr.status 200){
var listeregion = xhr.responseText;
document.getElementById('dv_regions').innerHTML = listeregion;
paysencours=pays;
charge_dest('p',paysencours,cbo);
}
}
xhr.open("GET","/AjaxFiltre.aspx?py="+pays+"&cbo="+cbo+"&type="+type+"&pl=fr");
xhr.send(null);
}



Fichier Ajax.aspx.cs

protected void chargeregions(string cbo,string r)
{
SqlDataReader sdr;
string cboregions="<SELECT id=""+cbo+"_DdlRegions" onchange="javascript:filtre('dest',this.value,'"+cbo+"')">
<option value="0">"+ libregion+"</option>
";
sdr = globals.ExecuteReader("",System.Data.CommandType.Text,r);
while (sdr.Read())
{
cboregions+="<option value=""+sdr[0].ToString()+"">"+ sdr[1].ToString()+"</option>
";
}
cboregions+= "</select>";
Response.Write(cboregions);
sdr.Close();
}


Je penses que tu comprendra mieux comment marche ma page et ce que je veux en faire.

Max
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
20 juin 2006 à 11:07
C'est donc ca que tu veux faire : http://atlas.asp.net/atlastoolkit/CascadingDropDown/CascadingDropDown.aspx ;-)

Sinon il faut faire comme je l'ai déjà repeté :-p met un Cyril - MVS - MCP
0
Rejoignez-nous