Comunidad de diseño web y desarrollo en internet online

DataGrid con ItemRenderer más Custom Tooltip

Citar            
MensajeEscrito el 19 Feb 2009 01:23 pm
Hola Comunidad, me paso para ver si me pueden dar una mano con ésto. Les cuento de que se trata: un datagrid con una columna que tiene un itemRenderer, ese item (unicono en éste caso) tiene la función toolTipCreate que básicamente lo que hace es crear un toolTip customizado, yo particularmente utilizé un Panel.
Después de largo rato y gracias a la ayuda de Eldervaz, pude enviar un parámetro a la función que llama toolTipCreate, implementando Singleton, ya que lo que estaba dentro del ámbito del renderer no veía nada del exterior. Ahora bien, el array que proveía de datos a mi Tooltip era siempre el mismo, y ahí está el problema, necesito que de algún modo pueda filtrar los datos.
Para que se entienda mejor, dejo una captura de pantalla, un XML (que luego parseo a ArrayCollection) y algo de código que estoy utilizando.



Código :

<?xml version="1.0"?>
<WSMCD>
   <Resultado>
      <Clientes>
         <Cliente IdCliente="1" Entidad="Felipe Almirall" Cuenta="0" IdPais="0002" Pais="DINAMARCA" Categoria="COMPAÑIA DE SEGUROS" IdCategoria="2" Vigente="S">
            <ContactosCliente>
               <Contacto IdContacto="1" Nombre="Contacto Cliente 1" Telefono1="1111111" Telefono2="12121212" Email="[email protected]" TipoContacto="Comercial"/>
               <Contacto IdContacto="2" Nombre="Contacto Cliente 2" Telefono1="2222222" Telefono2="13131313" Email="[email protected]" TipoContacto="Comercial"/>
               <Contacto IdContacto="3" Nombre="Contacto Cliente 3" Telefono1="5555555" Telefono2="14141414" Email="[email protected]" TipoContacto="BackOffice"/>
               <Contacto IdContacto="6" Nombre="Contacto Cliente 6" Telefono1="6666666" Telefono2="15151515" Email="[email protected]" TipoContacto="Comercial"/>
            </ContactosCliente>
            <ContactosClienteCustodio>
               <Custodio IdCustodio="1" NombreCustodio="Custodio 1" IdPais="0001" Pais="CHILE">
                  <Contactos/>
                  <Cuentas>
                     <Cuenta NumCuenta="3000003033" Comentario="0" IdCta="1" NombreCta="cuenta 000001"/>
                  </Cuentas>
               </Custodio>
               <Custodio IdCustodio="2" NombreCustodio="Custodio 2" IdPais="0001" Pais="CHILE">
                  <Contactos>
                     <Contacto IdContacto="1" NombreContacto="Contacto Custodio 1" Telefono1="1111111" Telefono2="" Email="[email protected]" TipoContacto="Comercial"/>
                  </Contactos>
                  <Cuentas/>
               </Custodio>
               <Custodio IdCustodio="3" NombreCustodio="Custodio 3" IdPais="0002" Pais="DINAMARCA">
                  <Contactos>
                     <Contacto IdContacto="2" NombreContacto="Contacto Custodio 2" Telefono1="2222222" Telefono2="" Email="[email protected]" TipoContacto="BackOffice"/>
                     <Contacto IdContacto="7" NombreContacto="Contacto Custodio 7" Telefono1="7777777" Telefono2="" Email="[email protected]" TipoContacto="BackOffice"/>
                  </Contactos>
                  <Cuentas/>
               </Custodio>
               <Custodio IdCustodio="5" NombreCustodio="Custodio 5" IdPais="0003" Pais="PORTUGAL">
                  <Contactos>
                     <Contacto IdContacto="4" NombreContacto="Contacto Custodio 4" Telefono1="4444444" Telefono2="" Email="[email protected]" TipoContacto="Comercial"/>
                  </Contactos>
                  <Cuentas/>
               </Custodio>
            </ContactosClienteCustodio>
         </Cliente>
         <Cliente IdCliente="2" Entidad="Annette Bencomo" Cuenta="1" IdPais="0003" Pais="PORTUGAL" Categoria="FONDOS MUTUOS" IdCategoria="1" Vigente="S">
            <ContactosCliente>
               <Contacto IdContacto="4" Nombre="Contacto Cliente 4" Telefono1="5555555" Telefono2="16161616" Email="[email protected]" TipoContacto="Comercial"/>
               <Contacto IdContacto="5" Nombre="Contacto Cliente 5" Telefono1="5555555" Telefono2="17171717" Email="[email protected]" TipoContacto="BackOffice"/>
            </ContactosCliente>
            <ContactosClienteCustodio>
               <Custodio IdCustodio="2" NombreCustodio="Custodio 2" IdPais="0001" Pais="CHILE">
                  <Contactos/>
                  <Cuentas>
                     <Cuenta NumCuenta="1000001011" Comentario="0" IdCta="2" NombreCta="cuenta 000002"/>
                  </Cuentas>
               </Custodio>
               <Custodio IdCustodio="3" NombreCustodio="Custodio 3" IdPais="0002" Pais="DINAMARCA">
                  <Contactos/>
                  <Cuentas>
                     <Cuenta NumCuenta="2000002022" Comentario="0" IdCta="1" NombreCta="cuenta 000001"/>
                  </Cuentas>
               </Custodio>
               <Custodio IdCustodio="4" NombreCustodio="Custodio 4" IdPais="0001" Pais="CHILE">
                  <Contactos>
                     <Contacto IdContacto="6" NombreContacto="Contacto Custodio 6" Telefono1="6666666" Telefono2="" Email="[email protected]" TipoContacto="BackOffice"/>
                  </Contactos>
                  <Cuentas>
                     <Cuenta NumCuenta="25690044580" Comentario="0" IdCta="1" NombreCta="cuenta 000001"/>
                     <Cuenta NumCuenta="25690044580" Comentario="0" IdCta="3" NombreCta="cuenta 000003"/>
                  </Cuentas>
               </Custodio>
               <Custodio IdCustodio="5" NombreCustodio="Custodio 5" IdPais="0003" Pais="PORTUGAL">
                  <Contactos>
                     <Contacto IdContacto="8" NombreContacto="Contacto Custodio 8" Telefono1="8888888" Telefono2="" Email="[email protected]" TipoContacto="Comercial"/>
                     <Contacto IdContacto="5" NombreContacto="Contacto Custodio 5" Telefono1="5555555" Telefono2="" Email="[email protected]" TipoContacto="Comercial"/>
                     <Contacto IdContacto="3" NombreContacto="Contacto Custodio 3" Telefono1="3333333" Telefono2="" Email="[email protected]" TipoContacto="BackOffice"/>
                  </Contactos>
                  <Cuentas>
                     <Cuenta NumCuenta="25690044580" Comentario="0" IdCta="1" NombreCta="cuenta 000001"/>
                  </Cuentas>
               </Custodio>
            </ContactosClienteCustodio>
         </Cliente>
      </Clientes>
   </Resultado>
   <Error Status="0"/>
</WSMCD>


Acá creo el ArrayCollection:

Código :

private function initToolTipData():void{
            
            // Por cada nodo, crea un nuevo Object, añade los atributos de acuerdo 
            // al XML e inserta en un Array Collection
            var oElemento:Object; 
            
            for each ( var element:XML in xmlDataGridClientes.Resultado.Clientes.Cliente.ContactosCliente.Contacto){
               oElemento = new Object();
               oElemento.idContacto = element.@idContacto;
               oElemento.infoContacto = element.@Nombre + " | " + element.@Telefono1 + " | " + element.@Telefono2 + " | " + element.@Email;         
               miArrayCollection.addItem(oElemento);
            }
            
            var mySingleton:Singleton = Singleton.getInstance(); 
            mySingleton.arrContactos = miArrayCollection;

         }


Acá el DataGrid en cuestión:

Código :

<mx:DataGrid width="100%" height="90%" id="dgClientes"
         dataProvider="{xmlDataGridClientes.Resultado.Clientes.Cliente}">
      <mx:columns>
         <mx:DataGridColumn headerText="Entidad" dataField="@Entidad"/>
         <mx:DataGridColumn headerText="Cuenta" dataField="@Cuenta"/>
         <mx:DataGridColumn headerText="País" dataField="@Pais"/>
         <mx:DataGridColumn headerText="Categoría" dataField="@Categoria"/>
         <mx:DataGridColumn id="Contacto" headerText="Contacto" dataField="@IdCliente" >
            <mx:itemRenderer>
               <mx:Component>
                  <itemRenderers:iconToolTipContacto
                     toolTipCreate="createCustomTip(event)"
                     toolTipShow="positionTip(event)"
                     toolTip=" "   />
               </mx:Component>
            </mx:itemRenderer>
         </mx:DataGridColumn>
         <mx:DataGridColumn headerText="Clte. Vigente" dataField="@Vigente"/>
      </mx:columns>
   </mx:DataGrid>


Y por último, el DataGrid que tengo dentro del ToolTip, que recibe el ArrayCollection que formé antes:

Código :

<mx:DataGrid dataProvider="{_arrContactos}" width="100%" 
      backgroundColor="#FFFFCC" borderStyle="none" alternatingItemColors="#FFFFCC">
      <mx:columns>
         <mx:DataGridColumn headerText="Contactos Cliente" dataField="infoContacto"/>
      </mx:columns>
   </mx:DataGrid>


De ésta forma sobre cada cliente que me paro, me muestra TODOS los contactos, y necesito que me muestre sólo los suyos.

No necesito que me resuelvan el problema codificando porque es tedioso, sólo que me den una idea de como encarar la lógica, que herramientas utilizar.

Saludos y gracias!

Por jgriguol

35 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 20 Feb 2009 02:31 am
agrega al data un identifcador de contacto de forma que se pudan identificadar a los contacto de forma unica
por ejemploe 1 juanPerez, luego ese identificador debera estar asociados a todos los contactos que pertenecen
a juanPerez , en el caso que no tengas un identificador unico, luego si tienes un identifiador unico asocialos
a los que pertenecen al contacto , luego coloca ese identifador en el data grid y con la funcion selectedindex del data
sacaras los datos de la columna que en ese momento estas situado ,luego saca el identificador y haz una funcion que
busque a los asociados a los contactos de ese objecto en paritcular y luego que tiene el array lo podras mostrar
en lo que tu quieras.

Por xcom

Claber

530 de clabLevel



 

firefox

 

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