Comunidad de diseño web y desarrollo en internet online

Datagrid con imagen en Flex 3

Citar            
MensajeEscrito el 22 Feb 2011 07:58 pm
Amigos, tengo un datagrid en el cual necesito que se vea una imagen de un Pdf, para que cuando el usuario haga click en él, se abra dicho pdf. Este es mi código:

Código Flex :

<mx:DataGrid x="44" y="781" width="825" dataProvider="{envioDatosDownlClientes.lastResult.users.user}"  height="220">
                  <mx:columns>
                     <!--<mx:DataGridColumn headerText="Nombre" dataField="Nombre" width="100"/> -->
                     <mx:DataGridColumn headerText="Tipo" dataField="Tipo" width="400"/>
                     <mx:DataGridColumn headerText="Versión" dataField="Version" itemRenderer="LinkRendererDescargas" width="200"/>
                     <mx:DataGridColumn headerText="Manual de Ayuda" dataField="UrlManual" width="200" itemRenderer="LinkRendererDescargasImagen"/>
                  </mx:columns>
               </mx:DataGrid>



y este es el código del componente:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Image xmlns:mx="http://www.adobe.com/2006/mxml" source="@Embed('../imag/principal/file_pdf.png')"
   click="linkListener(event)" >
   
   <mx:Script>
      <![CDATA[
         
         private function linkListener(event:MouseEvent):void {
            var request:URLRequest = 
            new URLRequest(event.currentTarget.data.UrlManual); 
            navigateToURL(request, "_blank");
         }
      ]]>
   </mx:Script>
</mx:Image>



Con todo este código me funciona, lo único que me falta es que sólo me ponga la imagen en los registros que tienen link, ya que NO todos los registros tienen link... como esta me pone la imagen en todo tenga o no tenga Link. Espero puedan ayudarme! Gracias!!!!! :)

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Feb 2011 08:58 pm
Puedes usar un Panel con dos estados, en el creationComplete si el data.UrlManual está vacío te quedas donde estás, sino te mueves al estado con el ícono para ir al download

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2011 02:11 pm
Jorge, por ahí me exprese mal, o por ahí no te entiendo bien... mira esto es lo que tengo:


en ese datagrid me muestra todos los registros del campo "Manual" con la foto, y sólo algunos tienen manual o sea link, entonces no quiero que se vea la foto en los que no tienen... Gracias! y disculpa si no te entiendo.

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2011 02:48 pm
La idea es esta:

- Tu itemrenderer se basa en un panel que dentro tiene dos estados: "noFile" y "File"
- En noFile no tienes nada, o puedes poner algún ícono que indica que no existe archivo
- En File lo que tienes actualmente
- En el creationComplete del Panel llamas a una función que verifica si data.UrlManual está vacío o no y se mueve al estado correspondiente

Asumo que sabes lo que son estados (state) y el creationComplete, sino pregunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2011 04:02 pm
Jorge, disculpa que te moleste...
Entendí todo y me parece genial tu respuesta. Lo puse en práctica pero me da un error:
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
at ItemRendererPanel/linkListener()[C:\Users\luish\Documents\Flex Builder 3\pro\src\ItemRendererPanel.mxml:27]
at ItemRendererPanel/__image1_click()[C:\Users\luish\Documents\Flex Builder 3\pro\src\ItemRendererPanel.mxml:13]
Este es mi código del panel:

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="68" height="82" creationComplete="init()" borderStyle="none">
   <mx:states>
      <mx:State name="noFile">
         <mx:RemoveChild target="{image1}"/>
         <mx:AddChild relativeTo="{canvas1}" position="lastChild">
            <mx:Label x="29" y="33" text="Nada"/>
         </mx:AddChild>
      </mx:State>
   </mx:states>
   <mx:Canvas x="10" y="10" width="22" height="25" id="canvas1">
   <mx:Image source="@Embed('../imag/principal/file_pdf.png')"
   id="image1" x="-5" y="-6" click="linkListener(event)">
   
   <mx:Script>
      <![CDATA[
      
      private function init():void{
         if (data.UrlManual == null){
            currentState = 'noFile'
         }
      }
          
         private function linkListener(event:MouseEvent):void {
            var request:URLRequest = 
            new URLRequest(event.currentTarget.data.UrlManual); 
            navigateToURL(request, "_blank");
         }
      ]]>
   </mx:Script>
</mx:Image>
   </mx:Canvas>
   
</mx:Panel>


Tenes idea de que puede estar pasando? Gracias mil!!!!!!! :)

Por xchacalx

Claber

133 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2011 04:05 pm
Sip, no creo que el evento del botón tenga la URL a la que quieres ir, en todo caso haría

Código ActionScript :

var request:URLRequest =  new URLRequest(data.UrlManual);  


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Feb 2011 04:21 pm
Si si que tonto!!! no me di cuenta!!!! Gracias!!! me sirvio!!! mil gracias!!!!!

Por xchacalx

Claber

133 de clabLevel



 

firefox

 

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