Trucsweb.com

Forum de discussion

 Forum « Flash et Shockwave » (archives)

Re: combobox dynamique et conversion de la chaîne http en matrice (array)

Envoyé: 21 août 2004, 10h28 par Oznog


Salut,

Attention, l'instruction attend une matrice (array) de là les braquette " [ " et " ] " mais tu lui passe une simple chaîne de caractères. Et via l,en-tête HTTP tu ne peut rien passer d'autre qu,une chaîne de caractères. À preuve.

// C'est simplement une chaine de caractères
var sTemp = "[{label:'01.01.2000', data:'01.01.2000'},{label:'01.02.2000', data:'01.02.2000'}]";
this.Combo.setDataProvider(sTemp);

Ce que tu voudrais c'est passer une matrice et donc plutôt :

// Remarque qu'il n'y a plus de guillemet.
// C'est maintenant une matrice qui contient
// des nombre (ou date) et des chaînes de caractère.
var sTemp = [{label:'01.01.2000', data:'01.01.2000'},{label:'01.02.2000', data:'01.02.2000'}];
this.Combo.setDataProvider(sTemp);

Les braquettes sont une assignation pour la matrice comme le = l'est pour les variables. Ainsi ou pourrais aussi traduire ce que tu fais par :

maVariable = maMatrice[...];

Ce qui n'a pas de sens. En plus, les accolades " { " et " } " identifie un objet. Identification aussi perdu dans une chaîne de caractères. L'idéale serait d'évaluer la chaîne mais çe ne fonctionne pas auissi simplement.

Maintenant comment convertir la chaîne en matrice ? Tu dois le faire manuellement, c'est pourquoi en partant tu te complique la tâche en PHP. Ce serait beaucoup plus simple sans les braquettes et accolades. L'idée est de faire la matrice directement dans Flash. Et pour ce, la programmation a des outils basés sur les séparateurs dans une chaîne de caractères. Remarque ici que c'es ma méthode. Plusieurs écoles de pensée existe à ce niveau, certains crée une variable par valeur mais peut importe si tu pense qu'à l'origine c'est le PHP qui génère les séparateur (le conventionnel " & " ou tes séparateurs personnels).

Personnellement je cré mes propre séparateur dans ce cas-ci, la variable que j'imagine être "informations" (attention, pas significatif) que je renomme "hComboItems" (le h pour en-tête http) devrait être généré comme ceci :

// Généreé par ton PHP
// Note le séparateur "~" entre le items
// Poyurquoi ? le "~" est compatible OSX!
hComboItems = "01.01.2000,01.01.2000~01.02.2000,01.02.2000"

Note qu'on remarque que le "label" et le "data" ont la même valeur. Le script pourrais être simplifié et deux fois plus rapide si c'est toujours le cas. Mais parceque normalement la valeur n'est pas la même chose que le "label" je poursuis dans la même veine.

Maintenant dans Flash je récupère la valeur et la divise sur le séparateur "~":

// Création de la matrice finale
var aObjetCombo = new Array();

// Split le tout dans une matrice temporaire
var aCombo = sTemp.split("~");

// Ici on boucle la matrice temporaire
for(i=0;i<aCombo.length;i++){
// on resplit sur le séparateur ","
var aTemp = aCombo[i].split(",");
// Et on push le tout dans la matrice finale.
aObjetCombo.push({data:aTemp[0], label:aTemp[1]});
}

// Tu remarque ici l'usage des accolade pour indiquer
// un objet (et ces deux items, label et data).
// Lui fonctionne car ce n'es pas une chaîne ici
// mais bien une construction.
// (il n'y a d'ailleurs aucun guillement pour t'en convincre).

// Il suffit alors de passer une vrais matrice (aObjetCombo)
// ou chaque item est construit à partir d'un objet.
this.Combo.setDataProvider(aObjetCombo);

Code complet sans remarque :

// Méthode de récupération http
// d'un comboBox par les Trucsweb.com
// Auteur : Django (Oznog) Blais
// Simulation de la chaîne PHP
var sTemp = "01.01.2000,01.01.2000~01.02.2000,01.02.2000";

var aObjetCombo = new Array();
var aCombo = sTemp.split("~");
for(i=0;i<aCombo.length;i++){
var aTemp = aCombo[i].split(",");
aObjetCombo.push({data:aTemp[0], label:aTemp[1]});
}
this.Combo.setDataProvider(aObjetCombo);

p.s. tu peux aussi créer chaque item du combo un à la fois en les ajoutant directeemnt dans la boucle avec la méthode "addItem" :

this.Combo.addItem('Label','Valeur');

Voilà, ça fait pas mal le tour.

Ciao
Oznog


Réponses

 sp spRe: combobox dynamique et conversion de la chaîne http en matrice (array) snowteam221/8/2004
 sp spapel de fonction depuis le combobox snowteam221/8/2004
 sp spRe: apel de fonction depuis le combobox Oznog23/8/2004
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@