Foros del Web » Creando para Internet » Flash y Actionscript »

Importar xml a un PopUpMenuButton

Estas en el tema de Importar xml a un PopUpMenuButton en el foro de Flash y Actionscript en Foros del Web. Buenas, soy un novatillo con Flex y tengo una duda que seguramente alguien podrá solucionar fácilmente. Tengo que llenar los valores de un PopUpMenuButton mediante ...
  #1 (permalink)  
Antiguo 26/05/2009, 04:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 65
Antigüedad: 16 años
Puntos: 0
Importar xml a un PopUpMenuButton

Buenas, soy un novatillo con Flex y tengo una duda que seguramente alguien podrá solucionar fácilmente.

Tengo que llenar los valores de un PopUpMenuButton mediante un xml que tengo definido y consigo hacerlo metiendo el xml dentro del aplication, pero no lo consigo si lo saco a un xml externo, no se muy bien como hacer la llamada, ya que tampoco entiendo mucho xml.

Aquí tenéis el código que funciona:

Código:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:class="action.*">
	<class:EventoMenu id="eventomenu"/>
	 <mx:XMLList id="menuarchivo">
        <node label="Nuevo">
           <node label="Correo"/> 
           <node label="Carpeta"/>
        </node>
        <node label="Salir"/>
    </mx:XMLList>

 	<mx:XMLList id="menueditar">
        <node label="Cortar"/>
        <node label="Copiar"/> 
     </mx:XMLList>
     
	<mx:ApplicationControlBar x="36.5" y="36" width="228.95" height="33.030304">

		<mx:PopUpMenuButton label="A" itemClick="eventomenu.eventoarchivo(event)" dataProvider="{menuarchivo}" labelField="@label" width="46.590908" height="22.045454" cornerRadius="8"/>
		<mx:PopUpMenuButton label="E" itemClick="eventomenu.eventoeditar(event)" dataProvider="{menueditar}" labelField="@label" width="46.590908" height="22.045454" cornerRadius="8"/>
		
	</mx:ApplicationControlBar>
	
</mx:Application>
He probado a scar el xml fuera pero algo hago mal al llamarlo, aquí os pongo el código que tengo actualmente, aunque después de tantas pruebas no se si es lo más lógico que he hecho hasta ahora:

Código:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:class="action.*">
	<mx:HTTPService id="menu" url="xml/menus.xml"/>
	<class:EventoMenu id="eventomenu"/>
	
	<mx:ApplicationControlBar x="36.5" y="36" width="228.95" height="33.030304">

		<mx:PopUpMenuButton label="A" itemClick="eventomenu.eventoarchivo(event)" dataProvider="{menu.lastResult.menus.menuarchivo}" labelField="@label" width="46.590908" height="22.045454" cornerRadius="8"/>
		<mx:PopUpMenuButton label="E" itemClick="eventomenu.eventoeditar(event)" dataProvider="{menu.lastResult.mnus.menueditar}" labelField="@label" width="46.590908" height="22.045454" cornerRadius="8"/>
		
	</mx:ApplicationControlBar>	
</mx:Application>
Y aquí el código xml, menus.xml que esta en la carpeta xml, dentro de src

Código:
<?xml version="1.0" encoding="UTF-8"?>
<menus>
	 <mx:XML id="menuarchivo">
        <node label="Nuevo">
           <node label="Correo"/> 
           <node label="Carpeta"/>
           <node label="Cuenta"/>  
        </node>
           <node label="Guardar"/>
           <node label="Recibir"/>
           <node label="Salir"/>
    </mx:XML>

 	<mx:XML id="menueditar">
        <node label="Cortar"/>
        <node label="Copiar"/> 
        <node label="Pegar"/>
        <node label="Borrar carpeta"/>  
        <node label="Buscar"/>
     </mx:XML>
</menus>
Gracias todos!
  #2 (permalink)  
Antiguo 26/05/2009, 07:05
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 9 meses
Puntos: 20
Respuesta: Importar xml a un PopUpMenuButton

No veo donde llames a "xml/menus.xml"
  #3 (permalink)  
Antiguo 26/05/2009, 08:09
 
Fecha de Ingreso: mayo-2008
Mensajes: 65
Antigüedad: 16 años
Puntos: 0
Respuesta: Importar xml a un PopUpMenuButton

Yo pretendo llamarla en la tercera línea del segundo código (que es el que hay que corregir), en esta línea:

Código:
<mx:HTTPService id="menu" url="xml/menus.xml"/>
  #4 (permalink)  
Antiguo 26/05/2009, 15:17
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 9 meses
Puntos: 20
Respuesta: Importar xml a un PopUpMenuButton

Entonces al cargarse la aplicacion carga el menu

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="menu.send();">
  #5 (permalink)  
Antiguo 27/05/2009, 04:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 65
Antigüedad: 16 años
Puntos: 0
Respuesta: Importar xml a un PopUpMenuButton

Ok, ahora porlomenos me carga algo (Object, Object). No es lo que quiero pero parece que ha avanzado.

Si quiero que me salga esto en el despegable que tengo que poner en el data provider? Fijandote en el xml que tengo. Y si hay que restructurar el xml no pasa nada, pero no se mucho de xml y lo he creado así, puede que no sea una buena forma.

El codigo que tengo ahora y no funciona es este:

<mx:PopUpMenuButton label="A" itemClick="eventomenu.eventoarchivo(event)" dataProvider="{menu.lastResult.menus.XML}" labelField="@label"/>

Lo que quiero que muestre:

Nuevo
__Correo
__Carpeta
__Cuenta
Guardar
Recibir
Salir

Los __ quieren decir que son hijos de Nuevo.

Gracias

Última edición por zakabalt; 27/05/2009 a las 04:59 Razón: Edito para ñadir el código actual para el dataProvider
  #6 (permalink)  
Antiguo 27/05/2009, 08:10
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 9 meses
Puntos: 20
Respuesta: Importar xml a un PopUpMenuButton

No se exactamente lo que quieres, pero estoy viendo que te hacen falta varias cosas, como por ejemplo al crear el mx:HTTPService debes especificar el tipo de resultado que para este caso seria resultFormat="e4x" y tu archivo xml no lo tienes bien estructurado, tienes nodos sin cerrar, checa el ejemplo que te pongo para que te des una mejor idea

Código xml:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  3.     creationComplete="menu.send();">
  4. <mx:HTTPService id="menu" url="Test.xml" resultFormat="e4x"/>  
  5.     <mx:ApplicationControlBar x="36.5" y="36" width="228.95" height="33.030304">
  6.         <mx:PopUpMenuButton label="A"  dataProvider="{menu.lastResult.Archivo}" labelField="@label"  width="46.590908" height="22.045454" cornerRadius="8"/>
  7.         <mx:PopUpMenuButton label="E"  dataProvider="{menu.lastResult.Edicion}" labelField="@label" width="46.590908" height="22.045454" cornerRadius="8"/>
  8.     </mx:ApplicationControlBar>
  9. </mx:Application>

Código xml:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menus>
  3.      <Archivo id="menuarchivo" label="Archivo">
  4.         <node label="Nuevo"/>
  5.         <node label="Correo"/>
  6.         <node label="Carpeta"/>
  7.         <node label="Cuenta"/>  
  8.         <node label="Guardar"/>
  9.         <node label="Recibir"/>
  10.         <node label="Salir"/>
  11.     </Archivo>
  12.  
  13.     <Edicion id="menueditar"   label="Editar">
  14.         <node label="Cortar"/>
  15.         <node label="Copiar"/>
  16.         <node label="Pegar"/>
  17.         <node label="Borrar carpeta"/>  
  18.         <node label="Buscar"/>
  19.     </Edicion>
  20. </menus>
  #7 (permalink)  
Antiguo 27/05/2009, 09:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 65
Antigüedad: 16 años
Puntos: 0
Respuesta: Importar xml a un PopUpMenuButton

Muchas gracias ahora ya funciona. Lo que no hago bien es que con ese código xml, primero me abre un despegable Archivo y después los demás son sus hijos por así decirlo. Yo no quiero que salga Archivo, quiero que directo el despegable me ponga (Nuevo..Salir).

No se si tendría que hacer un xml para cada despegable, o es posible hacer un xml donde se agrupan los dos despegables, pero no salga ni Archivo ni Edicion, que salgan directo sus hijos.

Es más una pregunta de xml, pero espero que alguien pueda respondermelo aquí para dejar ya cerrado el tema.

Gracias!
  #8 (permalink)  
Antiguo 27/05/2009, 10:49
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 16 años, 9 meses
Puntos: 20
Respuesta: Importar xml a un PopUpMenuButton

Tienes que ponerle la propiedad showRoot=false en el menu
Código xml:
Ver original
  1. <mx:PopUpMenuButton label="A"  dataProvider="{menu.lastResult.Archivo}" labelField="@label"  width="46.590908" height="22.045454" cornerRadius="8" showRoot="false"/>
  #9 (permalink)  
Antiguo 28/05/2009, 00:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 65
Antigüedad: 16 años
Puntos: 0
Respuesta: Importar xml a un PopUpMenuButton

Perfecto! Muchisimas gracias por tu ayuda. Ya tengo un problema menos y más conocimientos.

Un salduo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:40.