IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

un menu hiérarchique dans un AdvancedDataGrid


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut un menu hiérarchique dans un AdvancedDataGrid
    Salut,
    dans notre base de données nous avons une entité qui s'appelle MENU. cette structure de menu possède une structure hiérarchique; chaque menu peut être soit fils soit père d'un autre, et nous avons un seul menu racine (le menu est un noeud dans une arbre de menu).
    chaque record dans la table MENU à des un id, un code métier, un nom,
    maintenant dans un AdvancedDataGrid j'essaie d'afficher cette structure de la façon suivante:

    menu ________| ID | nom | cde |
    ------------------------------------------
    +racine_________| 1 | menu1 | m1 |
    ---+menu2______| 2 | menu2 | m2 |
    ------+menu3____| 3 | menu3 | m2 |
    ---+menu4______| 4 | menu4 | m4 |
    ---+menu5______| 5 | menu5 | m5 |
    ------+menu6___| 6 | menu6 | m6 |
    --------+menu3__| x | menux | mx |

    ce que je veux c'est pas un groupement classique des données, mais une structure de Tree avec l'affichage des propriétés de chaque noeud dans les autre colonnes de l'advancedDataGrid.
    j'ai essayé avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    <mx:AdvancedDataGrid
    		width="755" height="194"
    		treeColumn="{rep2}">
    			<mx:dataProvider>
    				<mx:HierarchicalData source="{arr}" childrenField="children"/>
    			</mx:dataProvider>
    			<mx:columns>
    				<mx:AdvancedDataGridColumn id="rep2" dataField="label"/>
    				<mx:AdvancedDataGridColumn dataField="label"/>
    				<mx:AdvancedDataGridColumn dataField="val"/>
    				<mx:AdvancedDataGridColumn dataField="menu_nam"/>
    			</mx:columns>
    		</mx:AdvancedDataGrid>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <mx:ArrayCollection id="arr">
    		<mx:Array>
    			<mx:Object label="RACINE" val="menu0" menu_name="racine">
    				<mx:children>
    					<mx:Object label="CA" val="12" menu_name="menu0">
    						<mx:children>
    							<mx:Object label="Los Angeles" val="ZE"  menu_name="menu1">
    								<mx:children>
    									<mx:Object label="toto" val="az" menu_name="menu2"/>
    									<mx:Object label="titi" val="ff" menu_name="menu3"/>
    								</mx:children>
    							</mx:Object>
    							<mx:Object label="San Francisco" val="ht" menu_name="menu0"/>
    						</mx:children>
    					</mx:Object>
    					<mx:Object label="MA" val="sd" menu_name="menu0">
    						<mx:children>
    							<mx:Object label="Boston" val="yt" menu_name="menu0"/>
    							<mx:Object label="Dalas" val="yt" menu_name="menu0"/>
    							<mx:Object label="Dalas" val="yt" menu_name="menu0"/>
     
    						</mx:children>
    					</mx:Object>
    				</mx:children>
    			</mx:Object>
    		</mx:Array>
    	</mx:ArrayCollection>
    cette façon de faire ne répond pas a mon besoin car ça donne pas le résultat que je veux, (quand un menu posséde un seul noeud fils il affiche le père mais n'affiche pas d'afficher le fils, avec un menu a plusieur fils ça marche)
    merci pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    821
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 821

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Merci Garra pour ta réponse
    finalement j'ai trouvé la solution
    pour ceux qui son intéressés, voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init();//init(dpHierarchyXML2);">
     
     
     
    	<mx:Script>
    		<![CDATA[
    			import mx.messaging.management.Attribute;
    			import mx.controls.List;
    			import mx.collections.ArrayCollection;
    			import mx.collections.HierarchicalData;
    			import mx.events.ListEvent;
    			private function selectItem(event:ListEvent):void {
    				result.text = event.currentTarget.selectedItem.@menu_id;
    			}
    			private function selectItem2(event:ListEvent):void {
    				result.text = event.currentTarget.selectedItem.menu_id;
    			}
    			private var all2:ArrayCollection = new ArrayCollection([
    				{menu_id:1, name:"menu1", wording:"menu1", menu_code:"c1", menu_parent_id:null , children:[
    					{menu_id:2, name:"menu2", wording:"menu2", menu_code:"c2", menu_parent_id:1, children:[
    						a
    						{menu_id:5, name:"menu5", wording:"menu5", menu_code:"c5", menu_parent_id:2 }
    					]},
    					{menu_id:4, name:"menu4", wording:"menu4", menu_code:"c4", menu_parent_id:1 }
    				]}
    			]);
     
    			private function add():void {
    				addChildren();
    			}
     
    			private function addChildren():void {
    				var obj:Object = new Object();
                    obj.menu_id = 6;
                    obj.name = "menu6";
                    obj.wording = "menu6";
                    obj.menu_code = "c6";
                    obj.menu_parent_code = 1;
                    obj.children = [{menu_id:7, name:"menu7", wording:"menu7", menu_code:"c7", menu_parent_id:57}];
                    all2.addItem(obj);
    			}
    			private function toH():ArrayCollection {
    				var dest:ArrayCollection = new ArrayCollection();
    				//var source:ArrayCollection = new ArrayCollection();
     
    				for each(var item:Object in all) {
    					if(item.menu_parent_id == null) {
    						trace("1 = " + item.menu_id);
    					}
    				}
    				return null;
    			}
    			private function parcourir(xml:XMLList):void {
     
    				trace(xml.@name);
    				//trace(xml.children());
    				for each(var item:XML in xml.children()) {
    					parcourir(item.children());
    				}
    			}
    			private function init():void {
    				var xmlList:XMLList = toHXML();
    				menus.dataProvider = new HierarchicalData(xmlList);
    				//parcourir(dpHierarchyXML2);
    //				for each(var item:Object in xml) {
    //					trace(item.@name);
    //					init(item.menu);
    //					
    //				}
     
    			}
    			private function objToNode(obj:Object):XML {
    				var node:XML = <menu menu_id="" name="" wording="" menu_code="" menu_parent_id="" />;// = new XMLNode();
    				node.@menu_id = obj.menu_id;
    				node.@name = obj.name;
    				node.@wording = obj.wording;
    				node.@menu_code = obj.menu_code;
    				node.@menu_parent_id = obj.menu_parent_id;
    				return node;
    			}
    			private function insert(obj:Object, xml:XMLList):void {
    				/**
    				 * parcourir tous les elements du "xml" pour trouver le parent de l'objet en cours "obj"
    				 * si on trouve le parent on lui insere "obj"
    				 * 
    				 */ 
     
    				for each(var item:* in xml) {
    					trace("id" + item.@menu_id);
     
    					if(item.@menu_id == obj.menu_parent_id) {
    						item.appendChild(objToNode(obj));
    						return ;
    					} else {
    						insert(obj, item.menu);
    					}
     
    				}
     
    			}
    			private function toHXML():XMLList {
    				// structure xml a retourner
     
    				var xml:XMLList = first();
    				var i:int = 1;
    				for each(var item:Object in all) {
    					if(item.menu_parent_id == null) {
    						xml.appendChild(objToNode(item));
    					} else {
    						insert(item, xml);
    					}
    				}
     
    				return xml;
    			}
    			private function first():XMLList {
    				var node:XML = <i><menus/></i>;
    //				var node:XML = <menu menu_id="" name="" wording="" menu_code="" menu_parent_id="" />;// = new XMLNode();
    //				node.menu.@menu_id = all[0].menu_id;
    //				node.menu.@name = all[0].name;
    //				node.menu.@wording = all[0].wording;
    //				node.menu.@menu_code = all[0].menu_code;
    //				node.menu.@menu_parent_id = all[0].menu_parent_id;
     
    				//var xml: XML = <tmp>+objToNode(all[0])+</tmp>;
    				var xmllist:XMLList = node.children();
     
     
     
     
     
    				return xmllist;
    			}
    			[Bindable]
    			private var all: ArrayCollection = new ArrayCollection([
    				{menu_id:1, name:"menu1", wording:"menu1", menu_code:"c1", menu_parent_id:null },
    				{menu_id:2, name:"menu2", wording:"menu2", menu_code:"c2", menu_parent_id:1 },
    				{menu_id:3, name:"menu3", wording:"menu3", menu_code:"c3", menu_parent_id:null },
    				{menu_id:4, name:"menu4", wording:"menu4", menu_code:"c4", menu_parent_id:1 },
    				{menu_id:5, name:"menu5", wording:"menu5", menu_code:"c5", menu_parent_id:2 },
    				{menu_id:6, name:"menu6", wording:"menu6", menu_code:"c6", menu_parent_id:4 },
    				{menu_id:7, name:"menu7", wording:"menu7", menu_code:"c7", menu_parent_id:4 },
    				{menu_id:8, name:"menu8", wording:"menu8", menu_code:"c8", menu_parent_id:7 },
    				{menu_id:9, name:"menu9", wording:"menu9", menu_code:"c9", menu_parent_id:7 },
    				{menu_id:10, name:"menu10", wording:"menu10", menu_code:"c10", menu_parent_id:6 },
    				{menu_id:11, name:"menu11", wording:"menu11", menu_code:"c11", menu_parent_id:5 },
    				{menu_id:12, name:"menu12", wording:"menu12", menu_code:"c12", menu_parent_id:null },
    				{menu_id:13, name:"menu13", wording:"menu13", menu_code:"c13", menu_parent_id:3 },
    				{menu_id:14, name:"menu14", wording:"menu14", menu_code:"c14", menu_parent_id:3 }
    			]);
    		]]>
    	</mx:Script>
    	<mx:XMLList id="cible">
    		<menu menu_id="1" name="menu1" wording="menu1" menu_parent_id="null">
    		</menu>
    	</mx:XMLList>
    	<mx:XMLList id="dpHierarchyXML2" >
    		<menu name="racine" id="1" code="m1">
    			<menu name="menu2" id="2" code="m2">
    				<menu name="menu3" id="3" code="m3"/>
    				<menu name="menu4" id="4" code="m4" />	
    			</menu>
    			<menu name="menu5" id="5" code="m5">
    				<menu name="menu6" id="6" code="m6"/>
    			</menu>
    			<menu name="menu7" id="7" code="m7">
    				<menu name="menu8" id="8" code="m8"/>
    				<menu name="menu9" id="9" code="m9">
    					<menu name="menu10" id="10" code="m10"/>
    				</menu>	
    			</menu>
    		</menu>
    	</mx:XMLList>
    	<mx:AdvancedDataGrid id="menus" doubleClickEnabled="true"  itemDoubleClick="selectItem(event)"
    		defaultLeafIcon="@Embed(source='assets/folder.png')"
    		folderOpenIcon="@Embed(source='assets/folder.png')"
    		folderClosedIcon="@Embed(source='assets/folder_go.png')"
    		 x="247" y="20" height="426" width="833">
    		<mx:columns>
    			<mx:AdvancedDataGridColumn dataField=""
    				headerText="Menu"/>
    			<mx:AdvancedDataGridColumn dataField="@menu_id"
    				headerText="ID"/>
    			<mx:AdvancedDataGridColumn dataField="@name"
    				headerText="Name"/>
    			<mx:AdvancedDataGridColumn dataField="@menu_code"
    				headerText="Code"/>
    		</mx:columns>
    	</mx:AdvancedDataGrid>
    	<mx:AdvancedDataGrid id="menus2" doubleClickEnabled="true"  itemDoubleClick="selectItem2(event)"
    		defaultLeafIcon="@Embed(source='assets/folder.png')"
    		folderOpenIcon="@Embed(source='assets/folder.png')"
    		folderClosedIcon="@Embed(source='assets/folder_go.png')"
    		dataProvider="{new HierarchicalData(all2)}" x="37" y="170" height="276" width="190">
    		<mx:columns>
    			<mx:AdvancedDataGridColumn dataField=""
    				headerText="Menu"/>
    			<mx:AdvancedDataGridColumn dataField="menu_id"
    				headerText="ID"/>
    			<mx:AdvancedDataGridColumn dataField="wording"
    				headerText="Wording"/>
    			<mx:AdvancedDataGridColumn dataField="menu_code"
    				headerText="Code"/>
    		</mx:columns>
    	</mx:AdvancedDataGrid>
    	<mx:Label id="result" x="37" y="144" text="Label" width="135"/>
     
    </mx:Application>
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [c#]probleme avec les menu toolStripItem dans une form mdi??
    Par must19 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/11/2006, 23h02
  2. Supprimer la barre de menu contextuel dans un état
    Par soso78 dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2005, 00h05
  3. Créer un menu contextuel dans une zone de liste
    Par 973thom dans le forum Access
    Réponses: 10
    Dernier message: 13/09/2005, 23h59
  4. menu contextuel dans treeview
    Par GAGNON dans le forum IHM
    Réponses: 6
    Dernier message: 08/04/2005, 18h11
  5. Gestion de menu, JPanels dans une JFrame
    Par Doc.Fusion dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 03/12/2004, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo