Comunidad de diseño web y desarrollo en internet online

Como filtro info en eun DataGrid??

Citar            
MensajeEscrito el 30 Jul 2008 02:35 pm
Buenas, aver si alguien se apiada y me responde... está medio off el foro, hace rato que busco ayuda por aca y queda todo a medias si es que tengo suerte de que alguien responda.
Mi problema es que tengo un listado de usuariosen un datagrid y tengo 1 combobox que contiene los "grupos de usuario" y 2 textinput para filtrar por nombre y apellido...
Estuve chequeando:
http://blog.flexexamples.com/wp-content/uploads/XMLListCollection_filterFunction_test/bin/srcview/index.html
pero no veo la forma de hacer que me filtre por otro atributo, en ese XMLListCollection el último nivel representaria a los usuarios, en mi XML tengo algo como
<grupo nombre="admin">
<usuario nombre="xx" apellido="xx" direccion="xx" telefono="xx" />
</grupo>

Creo que estoy planteando mal la estructura del XML, puede ser? en el ejemplo sobre el cual me base, deberia ser algo como:
<grupo nombre="admin">
<usuario>
<nombre>xxx</nombre>
<apellido>xxx</apellido>
</usuario>
</grupo>

No sé, alguien me ayuda?

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 30 Jul 2008 03:49 pm
está medio off el foro, hace rato que busco ayuda por aca y queda todo a medias si es que tengo suerte de que alguien responda.


Una sugerencia:
- A cada uno que ayudas recuérdale que esto es de ida y vuelta, que ya sabes que hay mucha gente que solo pregunta y encima se queja si tardan o no le resuelven las cosas al 100%
- ... y si no funciona, exige que te devuelvan tu dinero

Estoy estudiando tu pregunta, armando el MXML, consultando la ayuda, buscando en Google, ni bien lo saque te contesto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jul 2008 04:03 pm
Gracias Jorge, entiendo lo que me decis, de hecho mi idea es poder ayudar en un futuro no muy lejano, claro que por aca no me conocen pero soy bastante forero y es como un hobbie visitar ciertos foros y participar por amor al arte (tipico de frikis jeje). Como prueba de eso conteste en 1 o 2 topicos de aqui sobre temas muy básicos, pasa que como ya dije, soy muy nuevito en esto de Flex y AS y una intervencion mia seria un claro spam para el hilo en cuestión.
No te preocupes que cuando surjan cosas que yo sepa solucionar y esté a mi alcance, encantado ayudaré, creo que la mayoria de los que estamos por aca sentimos cierta satisfacción con ayudar a alguien, y ese es nuestro pago.

Volviendo al tema, en el link que dejé, es ése ejemplo me basé... pero para que lo tengas mas claro es un simple listado de usuarios con 4 o 5 atributos que pertenecen a un grupo en particular. Aunque ahi está el otro problema, creo entender por lo que he visto, que la estructura del XML limita o complica su uso para con ciertos controles. Por ejemplo a ese XML lo hice en base a uno que publico Zguillez para completar un Tree (en el tuto de como usar icons customizados en el comp Tree).

Saludos =)

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 30 Jul 2008 08:10 pm
Otra duda, pero ésta supongo mucho más simple. Estoy intentando desglosar bien el código, separando lo que se pueda en componentes (para que luego también sean reutilizables) y tengo el inconveniente que hay funciones en las que hago referencia a, por ejemplo, un texinput que está en otro componente hijo del componente padre, pero que la funcion en si misma la utilizo para otro componente hijo... me da error que no existe el componente texinput X en mi componente personalizado... se me entendio? :(

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 31 Jul 2008 01:41 am
Si haces referencia a un componente que está fuera del scope, quiere decir que no está bien encapsulado y que será difícilmente reutilizable. Para reutilizar elementos tienes que usar un modelo de eventos (componente A dispara evento, componente B lo escucha) que es un modelo no acoplado y que permite independencia entre las partes. Si no lo puedes resolver así, entonces tendrás que buscar la ruta al otro componente, pero eso será difícilmente reutilizable

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Jul 2008 01:59 am
Eso, como seria una ruta para llegar al otro componente...? No se si eso se hace desde mxml o AS, ni se como se hace.
Tengo un componente que llamo PanelUserAdmin y otros 3 que son basados en "Panel", uno tiene un Tree, el otro componente del medio es el form que cuando selecciono un usuario del tree se completa con sus datos, y el 3ro es el bendito panel donde esta el DataGrid con unos inputs para filtrar tambien, el listado de usuarios. Como ves, el primer componente y el ultimo se relacionan con el del medio ya que aal seleccionar una fila, se debe completar el form con sus datos asi se puede modificar los datos, etc..
Son 3 paneles uno al lado del otro, los mismos estan utilizados en un componente "padre".

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 31 Jul 2008 02:33 am
En ese sentido puedes acceder como lo hacías en Flash, pero usando el ID de los componentes (que vienen a ser como los nombres de instancia), así construyes las rutas como comp1.comp2.comp3.loquesea

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Ago 2008 02:02 pm
Hola Jorge, gracias por la data.. aún no lo probé porque de todas formas no tenia mucho sentido separarlo, son muy dependientes entre si los componentes asi que reutilizarlos por separado no tenia mucho sentido... igual me descargue un componente de un datagrid avanzado que internamente esta implementado con ese concepto... asi que lo analizaré como se trabaja ahi.

Con respecto al tema principal del hilo, lo tengo solucionado, aunque de otra forma, véase:
http://flexed.wordpress.com/2006/12/26/customgrid-v10-or-searchgrid-v20/
Con un solo input, es bastante mas simple quizá para el usuario final.

Ahora el problema que tengo es que no se como popular un Tree con un XML de éstas caracteristicas:

Código :

<grupo nombre="admin"> 
   <usuario> 
      <nombre>xxx</nombre> 
      <apellido>xxx</apellido> 
   </usuario> 
</grupo> 


Quiero que el nodo principal (carpetas) sean los grupos y que cada elemento sea una concatenacion del nombre y apellido (aunque quiza sea un unico campo, nickname). Todos los ejemplos que vi tienen un XML con ésta forma:

Código :

<group nombre="Bofh">      
     <claber nombre="Matias" apellido="Zapata" direccion="Felix Paz 1439" telefono="451515"/>      
     <claber nombre="Adrian" apellido="Rodriguez" direccion="asdasdsd" telefono="895252"/>      
     <claber nombre="Marcelo" apellido="Gonzales" direccion="asdasd" telefono="54655"/>   
</group>   

(lo saqué de clab)

Asi quedaria : labelField="@nombre" por ejemplo tomando el value de la PROPIEDAD, pero de la otra forma no se como acceder al valor del TAG.
Help please

Jonathan Griguol

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 01 Ago 2008 02:19 pm
Suponiendo que tuvieras nodos de texto, lo accedes:

Código :

var myXML:XML = <group>      
     <claber>Matias Zapata</claber> 
     <claber>Jorge Solis</claber>     
</group>  
trace(myXML.claber[0])


No lo probé con un tree (aunque justo en un rato tengo que meterme con ello), pero supongo que si pones myXML.claber como label te pinta los nombres

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Ago 2008 03:19 pm
No logro hacerlo funcionar Jorge. Te dejo el codigo aver si vos podés

El XMLList:

Código :

<mx:XMLList id="listado2">
<data>
<grupo nombre="admin">
   <usuario>
      <nombre>Jonathan</nombre>
      <apellido>Griguol</apellido>
      <email>[email protected]</email>
      <direccion>Felix Paz 1439</direccion>
      <telefono>4661820</telefono>
   </usuario>
   <usuario>
      <nombre>Matias</nombre>
      <apellido>Zapata</apellido>
      <email>[email protected]</email>
      <direccion>Maestro Vidal 544</direccion>
      <telefono>4885256</telefono>
   </usuario>
   <usuario>
      <nombre>Enrique</nombre>
      <apellido>Ambrosino</apellido>
      <email>[email protected]</email>
      <direccion>Pedro goyena 1328</direccion>
      <telefono>4882565</telefono>
   </usuario>
</grupo>
<grupo nombre="comun">
   <usuario>
      <nombre>Luciano</nombre>
      <apellido>Avendaño</apellido>
      <email>[email protected]</email>
      <direccion>Alte. brown 1510</direccion>
      <telefono>4895044</telefono>
   </usuario>
   <usuario>
      <nombre>Eduardo</nombre>
      <apellido>Rapetti</apellido>
      <email>[email protected]</email>
      <direccion>Eduardo Urrutia 1115</direccion>
      <telefono>4505888</telefono>
   </usuario>
</grupo>
</data>
</mx:XMLList>


Y el Tree:

Código :

   <mx:Panel width="15%" height="95%" layout="absolute" title="Grupos de usuario">
      <mx:Tree id="treeUsers"
         dataProvider="{listado2.data}" 
         defaultLeafIcon="{iconUser}" 
         labelField="@nombre"
         itemClick="dgChangeHandler()"
         horizontalCenter="0" 
         top="5" 
         width="100%" 
         height="50%"
         dragEnabled="true"
           dropEnabled="true"
           dragMoveEnabled="true"
           verticalScrollPolicy="on"
           alternatingItemColors="[#FFFFFF,#EEEEEE]"
         />


Ya tengo ese XML generado para rellenar un datagrid, por eso quiero usar el mismo. Conviene convertirlo en un ArrayCollection? o seria mas enquilombado aún? Asi lo hago con el dataGrid:

Código :

      private function initGrid():void{
         
         var oElemento:Object;    
      
         miArrayCollection = new ArrayCollection(); 
         
         // Por cada nodo, crea un nuevo Object, añade los 
                                               //atributos de acuerdo al XML y lo inserta en un Array Collection
         for each ( var element:XML in dp2.elements() )
         {
           oElemento = new Object();
           oElemento.nombre = element.nombre;
           oElemento.apellido = element.apellido;
           oElemento.email = element.email;
           miArrayCollection.addItem(oElemento);
         }
      // tomo los datos del array para los nombres de las columnas
          myDataGrid.drawColumns(gridColumns); 

                                //tomo los datos del array y populo el DataGrid    
                     myDataGrid.loadData(miArrayCollection); 
       }


Nunca vi un Tree populado con un arrayCollection, no se como se haría, pero quizá es mas manipulable.
Alguna sugerencia Jorge?

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 01 Ago 2008 03:37 pm
Ese XML no se adecúa a lo que necesita un componente Tree, pero para que por lo menos veas algo y le des vuelta, usa:

dataProvider="{listado2.grupo.usuario}" labelField="nombre"

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Ago 2008 03:58 pm
Ya veo, queda cualquier cosa en el Tree.. me recomendas generar 2 XML distintos entonces? Definitivamente con la forma de mi XML no puedo hacer lo mismo que con el ejemplo de clab, y justamente esa salida es la que espero, los nodos principales deben ser los grupos y el resto solo los nombres de los usuarios.

Gracias y disculpa la molestia Jorge.

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.