2012-04-19 2 views
1

J'utilise Flash Builder 4, et j'ai un fichier XML externe appelé words.xml avec la structure suivante:Création d'une liste basée sur des éléments XML unique dans Flash Builder de XMLListCollection filterFunction résultats

<wordList> 
    <wordRecord> 
     <word>duck</word> 
     <syllables>1</syllables> 
     <firstLetter>d</firstLetter> 
     <!--other fields--> 
    </wordRecord> 
    <wordRecord> 
     <word>machete</word> 
     <syllables>3</syllables> 
     <firstLetter>m</firstLetter> 
     <!--other fields--> 
    </wordRecord> 
    <!--more wordRecords--> 
</wordList> 

maintenant , attention, ce ne sont pas les noms de champs ou les contenus exacts, car ceux-ci sont la propriété de mon client, dont c'est le fichier XML. Mais c'est la structure de base. J'ai besoin d'afficher juste le champ "mot" de chaque "wordRecord" dans une liste, qui va être activé avec glisser-déposer et autres goodies.

Les parties pertinentes du fichier MXML Flash Builder sont:

<fx:Declarations> 
    <fx:XML id="wordsXML" source="/xml/words.xml" /> 
<fx:Declarations> 
<s:List id="resultsList"> 
    <s:dataProvider> 
     <s:XMLListCollection id="xmlWords" source="{wordsXML..word}" /> 
    </s:dataProvider> 
</s:List> 

Jusqu'à présent, si bon. La liste s'affiche très bien dans mon application Air, défile et tout, et quand les attributs appropriés sont présents, glisser et déposer fonctionne très bien. Mais ce dont j'ai besoin, c'est de pouvoir filtrer la liste en fonction des autres champs, et d'afficher seulement les mots du résultat. Supposons que le fichier XML contienne beaucoup, beaucoup d'éléments "wordRecord", et que je doive créer un filtreFunction qui ne me donnera finalement que le "mot" dont "firstLetter" est, supposons " m ".

J'ai essayé de créer une fonction filterFunction basée sur quelques exemples que j'ai trouvés sur le web, mais comme mon XMLListCollection est uniquement les champs, je ne peux pas faire en sorte que filterFunction fonctionne avec les autres champs XML. J'ai essayé de changer le XMLListDeclaration pour me donner chaque élément de "wordRecord" en tant que XMLList, mais alors je ne peux pas comprendre comment obtenir le s: List pour afficher seulement le "mot" des résultats du filterFunction.

Des idées? Merci d'avance.

+0

Publiez le code qui a échoué lorsque vous avez tenté de créer une fonction de filtre, car c'est probablement la seule façon de l'obtenir. –

Répondre

1
<s:List id="resultsList" labelField="word"> 
    <s:dataProvider> 
     <s:XMLListCollection 
       id="xmlWords" 
       source="{wordsXML..wordRecord}" 
       /> 
    </s:dataProvider> 
</s:List> 

De cette façon, vous avez l'objet 'wordRecord' pour votre fonction de filtre;

+0

c'était exactement ce dont j'avais besoin. Je me suis laissé entraîner sur un autre projet pendant plusieurs jours avant de pouvoir l'essayer. Parfait merci! – user1342752

Questions connexes