Comunidad de diseño web y desarrollo en internet online

Error, no puedo llamar una función

Citar            
MensajeEscrito el 13 Abr 2008 02:01 pm
Tengo un problema, no puedo llamar a una función...

Código :

<?xml version="1.0"?>
<!-- DataGrid control example. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
   <mx:Script>
      <![CDATA[
         private function modificarTexto():void 
           {
            textos.text+= dg.selectedItem.nombre + '\n' ;
          }
      ]]>
   </mx:Script>
    <mx:XMLList id="employees">
        <employee>
            <name>Christina Coenraets</name>
            <phone>555-219-2270</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Joanne Wall</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
        <employee>
            <name>Maurice Smith</name>
            <phone>555-219-2012</phone>
            <email>[email protected]</email>
            <active>false</active>
        </employee>
        <employee>
            <name>Mary Jones</name>
            <phone>555-219-2000</phone>
            <email>[email protected]</email>
            <active>true</active>
        </employee>
    </mx:XMLList>


        <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}">
            <mx:columns>
                <mx:DataGridColumn dataField="name" headerText="Name"/>
                <mx:DataGridColumn dataField="phone" headerText="Phone"/>
                <mx:DataGridColumn dataField="email" headerText="Email"/>
                <mx:DataGridColumn headerText="Agregar">
                   <mx:itemRenderer>
                      <mx:Component>
                         <mx:CheckBox label="Escoger" click="modificarTexto()"/>
                      </mx:Component>
                   </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

    <mx:TextArea id="textos"/>
        
</mx:Application>  



Con ese código se supone que al seleccionar un checkbox me haría escoger el item del datagrid, pero no es así, me marca error, diciendo:
1180: Call to a possibly undefined method modificarTexto. componentesComplejos/src componentesComplejos.mxml line 53 1208094605728 122

Lo cual para mí resulta extraño, quiere decir que los componentes rendereados dentro de otros componentes no pueden llamar otras funciones??

Obvio que cuando saco el checkbox del datagrid si funciona. Ojala hacerse de esta manera, sino la solución sería pasar el texto del datagrid a un campo de texto externo si usar el checkbox y agregarlo con un boton al textarea...

Saludos.

Por morpho4444

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 13 Abr 2008 05:28 pm
Los itemRenderer NO pueden acceder a metodos del MXML madre

Para llegar alla, tienes que hacer, desde el itemRender, esto:

Código :

this.parent.parent.parent;
Aunque tampoco es la mejor solución, es algo temporal que te podrá ayudar.

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

firefox
Citar            
MensajeEscrito el 13 Abr 2008 05:53 pm
No pude, me sale un error mas raro aun

lo puse mal tal vez

Código :

<mx:itemRenderer>
                      <mx:Component>
                         <mx:CheckBox label="Escoger" change="this.parent.parent.parent.modificarTexto()"/>
                      </mx:Component>
                   </mx:itemRenderer>


Seguire intentando

Por morpho4444

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 20 Oct 2008 06:40 am
Mira, yo también tengo el mismo problema.. estoy creando un mapa de procesos y necesito que cuando se de clic en uno de los itms del HorizontalList se refresque de nuevo todo el HorizontalList con el detalle del item antes cliqueado...

Encontré este enlace: http://groups.google.com/group/desarrollo-de-componentes-en-adobe-flex/msg/70b66ead02960c3a, donde hablan de hacer referencia a los métodos del Application raíz mediante Application.application... espero te ayude..

Si ya encontraste un método mejor, para hacer algo similar a esto.. te agradeciería me lo comentaras .. gracias!!

Por christiancamilo

2 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Oct 2008 04:36 pm
Hola

FIjate utilizando parentDocument, o parentApplication.

El tema de utilzar "componente" como render de un datagrid, es q el codigo de su interior no tiene el mismo scope de donde lo escribis, sino q es independiente y por ese motivo no podes acceder directamente al resto de los elementos.

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox

 

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