PostBack & Ajax

Signaler
Messages postés
4
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
19 juin 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
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

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

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
]
Messages postés
53
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
7 septembre 2006

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
Messages postés
4
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
19 juin 2006

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
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
4
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
19 juin 2006

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
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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
Messages postés
4
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
19 juin 2006

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
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
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