Flex AdvancedDataGrid – Icônes et labels du Tree de navigation
L'arbre de navigation d'un AdvancedDataGrid vous permet de contrôler les icônes et les labels utilisés pour les nœuds des branches (branch) et des feuilles (leaf). Par exemple, vous pouvez afficher un Tree simplement avec des labels, sans icônes, juste un Tree avec des folder icons, un Tree sans labels ou un Tree isolé qui n'est associé à aucun champ de data.
Voici les propriétés de style que vous pouvez définir sur le composant AdvancedDataGrid afin de modifier l'apparence du Tree:
- defaultLeafIcon: Spécifie l'icône des feuilles
- disclosureClosedIcon: Spécifie l'icon qui sera affiché à côté des noeuds de branche fermés. L'icon par défaut est un triangle noir.
- disclosureOpenIcon: Spécifie l'icon qui sera affiché à côté des noeuds de branche ouverts. L'icon par défaut est un triangle noir.
- folderClosedIcon: Spécifie l'icône dossier fermé
- folderOpenIcon: Spécifie l'icône dossier ouvert
L'exemple suivant fixe l'icône par défaut à null pour le cacher et utilise un icône personnalisé pour les icônes dossier ouvert / fermé:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
include "SimpleHierarchicalData.as";
]]>
</mx:Script>
<mx:AdvancedDataGrid width="100%" height="100%"
defaultLeafIcon="{null}"
folderOpenIcon="@Embed(source='assets/folder.png')"
folderClosedIcon="@Embed(source='assets/folder_go.png')">
<mx:dataProvider>
<mx:HierarchicalData source="{dpHierarchy}"/>
</mx:dataProvider>
<mx:columns>
<mx:AdvancedDataGridColumn dataField="Region"/>
<mx:AdvancedDataGridColumn dataField="Territory_Rep"
headerText="Territory Rep"/>
<mx:AdvancedDataGridColumn dataField="Actual"/>
<mx:AdvancedDataGridColumn dataField="Estimate"/>
</mx:columns>
</mx:AdvancedDataGrid>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
Vous pouvez aussi spécifier des styles en utilisant la méthode setStyle(), et en utilisant un tag <mx:Style> comme dans ces exemple:
<mx:Style>
AdvancedDataGrid {
defaultLeafIcon:ClassReference(null);
folderOpenIcon:Embed(source='assets/folderOpenIcon.jpg');
folderClosedIcon:Embed(source='assets/folderClosedIcon.jpg');
}
</mx:Style>
Articles similaires
- Flex AdvancdDataGrid – Utiliser une colonne spécialement pour le Tree de navigation
- Flex AdvancedDataGrid – Utiliser groupIconFunction pour déterminer l'icon d'un Tree
- Flex AdvancedDataGrid – Utiliser treeColumn pour définir la colonne qui va contenir le Tree
- Flex AdvancedDataGrid – Utilisation d'itemRenderer simples (column, depth et columnSpan)
- Flex AdvancedDataGrid – Créer plusieurs SummaryRow (bilans)
Aucun trackbacks pour l'instant






18 mai 2011
Bonjour,
Ce tutoriel m'est très utile. J'ai pu adapter ce qui est expliqué à mon application. Par contre il y a un truc que je ne comprends pas ...
(J'utilise Flash Builder 4)
J'ai inséré des icônes à mon Tree.
Quand le Tree se trouve dans un pannel et un formulaire, mes icônes s'affichent normalement. Par contre, quand le pannel lui est placé dans un viewStack (et sous entendu un NavigatorContent), mes icônes ne s'affichent plus du tout, et mon Tree garde son aspect par défaut...
Est ce normal ?
Voici mes deux codes exemples :
Code Pannel + Form + Tree :
Code viewStack + NavigatorContent + Pannel + Form + Tree :
Si vous pouviez m'éclairer à ce sujet je vous serai reconnaissante et cela me serait utile pour comprendre où se trouve mon erreur, s'il y en a une.
Nathalie
18 mai 2011
Bonjour,
effectivement, le comportement est assez étrange. Je pense que l'erreur vient du moment auquel vous appelez la méthode init. Vous l'appelez sur l'évènement initialize, ce qui est OK pour des modifications de style sur des éléments de l'application. Le problème est que les éléments qui sont dans un ViewStack ne sont pas créés automatiquement à la création du ViewStack. En effet, par défaut, les éléments contenus dans un ViewStack sont uniquement instanciés lorsque l'on navigue vers un de ces éléments (en utilisant la propriété selectedIndex ou selectedChild). A mon avis, le Tree que vous voulez modifier n'est pas encore accessible, il est étonnant que vous n'ayez pas une exception mais admettons ^^.
Ce que je vous conseillerait de faire, c'est de simplement déclarer vos icones dans un style CSS (doit une classe de style, soit directement sur Tree) si vous en avez plusieurs.
Sinon directement sur le composant:
<mx:Tree id="domains_Tree"
disclosureOpenIcon="@Embed(source="images/minus.gif")"
disclosureClosedIcon="@Embed(source="images/plus.gif")"
defaultLeafIcon="@Embed(source="images/folder.gif")"
... />
Fabien
18 mai 2011
Ohhhhhhhhhh !!!!! Super ça marche !!! ^^
Y a juste un petit détail mais ce n'est pas bien grave.
Pour le nom des sources, au lieu de mettre "images/minus.gif" il faut mettre 'images/minus.gif'. Sinon Flash Builder 4 mentionne une erreur comme celle-ci : Le type d'élément "{0}" doit être suivi des spécifications d'attribut ">" ou "/>".
Mais comme c'était écrit avec des ' ' dans l'exemple du tutoriel, facile de s'y retrouver.
Un grand merci à vous (toi) d'avoir pris un peu de temps pour me répondre car je me prenais la tête avec çà depuis hier. ^^
Nathalie
18 mai 2011
Salut Nathalie (on peut se tutoyer
),
effectivement, si tu utilises des doubles quotes comme attibut du XML, celui-ci ne devient plus valide. Je n'ai pas testé le code de mon côté, j'ai écrit ça dans un bloc-notes ^^. La solution est de mettre de simples quotes comme tu l'as fait.
Bonne chance pour la suite,
Fabien
24 mai 2011
URGENT !!!!
Gros PB avec mes icônes !!!!
Flash Builder 4 me trouve cette erreur quand j'ouvre mon application MXML contenant le code de la dernière fois :
Impossible de transcoder fr/studec/aceres/quizz/creator/admin_formateur/exam_generator_complet/images/plus.gif
Impossible de transcoder fr/studec/aceres/quizz/creator/admin_formateur/exam_generator_complet/images/minus.gif
Impossible de transcoder fr/studec/aceres/quizz/creator/admin_formateur/exam_generator_complet/images/folder.gif
Je me prend la tête depuis hier 18h avec ce pb. J'ai beau modifié le chemin d'accès, mettre mes icones en .gif dans un package images dans le même package que mon appli,etc, rien ne fonctionne. J'ai toujours la même erreur ...
Je dois présenter ce que j'ai fait aujourd'hui. Je suis dans la M .... Sans compter que Flash Builder 4 ne veut pas m'importer mon projet FXP car il trouve des erreurs, mais çà c'est une autre histoire ...
Si une explication, .... merci
Désolé de déranger mais je ne le fais pas exprès, vraiment pas.
Nathalie
24 mai 2011
Hum, normalement les icones ne disparaissent pas comme ça. S'il indique impossible de transcoder, cela signifie qu'il ne trouve pas l'icône. il faut vérifier que les fichiers {CHEMIN_SOURCES_PROJET}/src/fr/studec/aceres/quizz/creator/admin_formateur/exam_generator_complet/images/minus.gif existe bien
Fabien
24 mai 2011
Ce qui est bizarre, c'est qu'il m'affiche ces erreurs lorsque je passe en mode design pour travailler sur l'appli. Par contre quand j'exécute l'appli sur un navigateur il ne trouve aucune d'erreurs, et l'appli se lance avec les icônes. Pourtant le chemin est bon ...
Nath
24 mai 2011
Est ce que ce problème peut avoir des répercussions pour l'export du projet ? Car je ne peux pas exporter mon projet car il dit le projet contient des erreurs ...
24 mai 2011
Dans tous les cas, il faut corriger le problème de chemin vers les icones. S'il n'y a rien dans la vue Problems, tu sera tranquille
Fabien
24 mai 2011
C'est bon !!!!!
Après une journée d'énervement intense, et d'arrachage de cheveux (j'ai perdu quelques touffes dans la bataille contre Flash Builder 4,
)j'ai réussi à corriger les erreurs et à exporter mon projet.
J'ai détruit mon dossier "images" et je l'ai recréé, ensuite j'ai réécrit le chemin.
Pour l'export ce fut plus dur et plus long à résoudre, puisqu'il trouvait des erreurs dans le projet, du coup j'ai refait un projet dans lequel j'ai copié toutes mes appli. C'est peut-être pas la bonne, mais çà marche alors que demander de mieux.
S'il y en a qui ont les mêmes pb, voici une solution possible... mais longue
Merci pour les indices
Nath