caster une valeur en Actionscript
Bonjour,
Voici les éléments à partir desquels je code mon appli.:
j'ai un 1er fichier
siteslist.xml
Code:
1 2 3 4 5
| <SITES>
<ITEM><NAME>usine1</NAME><CODE>USN1</CODE></ITEM>
<ITEM><NAME>depot1</NAME><CODE>DEP1</CODE></ITEM>
<ITEM><NAME>usine2</NAME><CODE>USN2</CODE></ITEM>
</SITES> |
et un 2nd fichier
resourceslist.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <USN1>
<ITEM><NAME>resource1</NAME><CODE>RES1</CODE></ITEM>
<ITEM><NAME>resource2</NAME><CODE>RES2</CODE></ITEM>
<ITEM><NAME>resource3</NAME><CODE>RES3</CODE></ITEM>
</USN1>
<USN3>
<ITEM><NAME>machine1</NAME><CODE>MCH1</CODE></ITEM>
<ITEM><NAME>machine2</NAME><CODE>MCH2</CODE></ITEM>
<ITEM><NAME>machine3</NAME><CODE>MCH3</CODE></ITEM>
<ITEM><NAME>machine4</NAME><CODE>MCH4</CODE></ITEM>
</USN3> |
La logique de l'interface utilisateur (UI) est la suivante:
l'utilisateur sélectionne une valeur dans la ComboBox1
ComboBox1 (sites):
Code:
1 2 3
| <option value="USN1">usine1</option>
<option value="DEP1">depot1</option>
<option value="USN2">usine2</option> |
et selon l'option sélectionnée et donc la valeur renvoyée il aura une
ComboBox2 (resources) qui affichera, soit:
1er cas de figure
Code:
1 2 3
| <option value="RES1">resource1</option>
<option value="RES2">resource2</option>
<option value="RES3">resource3</option> |
si usine1 est sélectionnée donc la valeur USN1 renvoyée
2eme cas de figure
rien si depot1 est sélectionnée
3eme cas de figure
Code:
1 2 3 4
| <option value="MCH1">machine1</option>
<option value="MCH2">machine2</option>
<option value="MCH3">machine3</option>
<option value="MCH4">machine4</option> |
Dans mon code Actionscript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundColor="#000000" creationComplete="init()">
<mx:XML id="siteslist" source="./assets/siteslist.xml" />
<mx:XML id="resourceslist" source="./assets/resourceslist.xml" />
<mx:Script>
<![CDATA[
...
// Manage resources dropdown display
private var selectedsite:String = new String('FR');
private function onChangeSite(event:Event):void{
selectedsite = sites.selectedItem.code;
populateResourceList();
}
[Bindable]
private var arr_resource:Array = new Array();
private var _resources:ArrayCollection = new ArrayCollection();
private function populateResourceList():void{
if(selectedsite=='USN1'||selectedsite=='USN2')
{
resources.visible = true;
for each(var node:XML in resourceslist..selectedsite.ITEM)
{
arr_resource.push({label:node.NAME, code:node.CODE});
}
_resources.source = arr_state;
}
else
{
resources.visible = false;
}
]]>
</mx:Script>
...
<mx:ComboBox id="sites" dataProvider="{_sites}" close="onChangeSite(event);"/>
<mx:ComboBox id="resources" dataProvider="{_resources}" close="onChangeSite(event);" visible="false"/>
...
</mx:Application> |
Le problème est le suivant:
j'aimerais utiliser la valeur renvoyée par la ComboBox1 pour définir le noeud dans lequel je vais chercher les options (dans resourceslist.xml) de la ComboBox2.
Seulement
Code:
resourceslist..selectedsite.ITEM
ne marche pas. Si je teste en mettant une valeur directement du type
Code:
resourceslist..USN1.ITEM
, par exemple cela marche.
Comment convertir donc la valeur de 'selectedsite' en format acceptable dans la condition de la boucle 'for each' ?
Est-ce que quelqu'un pourrait m'aider s'il vous plaît ?
Merci
caster une valeur en Actionscript
Salut Krazymins,
Désolé de revenir un peu tard sur ta réponse. J'ai bien essayé en modifiant mon XML et du coup en changeant la position des noeuds USN1, USN2 mais je n'ai pas réussi. Je me suis résigné à répéter mon code (ce que j'aurais vraiment voulu éviter !).
Merci pour ta réponse et merci également à Ellene pour la correction de mon post.