Comunidad de diseño web y desarrollo en internet online

Datagrid que no obecede!!

Citar            
MensajeEscrito el 09 Abr 2008 12:48 pm
Hola buenas, soy nuevo en este foro, nuevo a la hora de escribir porque este foro ha contestado innumerables dudas sobre flash. La duda que presento está en otro de los foros pero hecha de distinta forma, tan distinta que quizá no sea exactamente lo mismo. Bueno yo la planteo a ver si podeis ayudarme:

Tengo una pagina en flash que mete en un Datagrid datos de una pagina php, todo funciona de maravilla. Luego quiero que al hacer click en los registros, me lleve al siguiente fotograma y me pase el valor de la celda que he pulsado.

Este es el codigo:

Código :

<textarea>stop();
var miLV:LoadVars = new LoadVars();
miLV.load("http://localhost/fierazzi/pagina_flash/php/todas_noticias.php");
miLV.onLoad = function ()
{   
      Array_titular= new Array();
      Array_cuerpo = new Array();
      contador = 0;
      for (i=0;this["titularT"+i]!=undefined;i++)
               {
               

            Array_titular[i] = this["titularT"+i];       
             Array_cuerpo[i] = this["cuerpoT"+i];        
   
            contador = contador + 1;
            }  
            
            for (j=0; j<contador; j++)

               {
                  
                  datagrid1.addItem({noticias: Array_titular[j]});
               datagrid1.backgroundColor="0x333333";
                  datagrid1.color = "0x3366CC";
                  datagrid1.fontSize = "14";
                  datagrid1.textAlign= "center";
                  datagrid1.hGridLines  = true;
                  
                  datagrid1.textRollOverColor  ="0xFF0000";
                  datagrid1.resizable = true;
               
                  


   
               }
   }
      

      listenerObject = new Object(); 
listenerObject.cellPress = function(evt){ 
trace(evt.target.getItemAt (evt.target.selectedIndex).noticias) 
} 
datagrid1.addEventListener("cellPress", listenerObject) 

</textarea>





El problema es la línea del trace, que me devuelve undefined y no se porque.
Por otra parte, ¿podeis decirme como hago para que el texto del registro ocupe dos o más lineas?.
Gracias por todo
[/list]

Por rubesk

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Abr 2008 01:06 pm
Fíjate en la ayuda que el acceso no se hace a través del evt.target:

Código :

dgListener.cellPress = function(evt_obj:Object) {
 var cell_str:String = "("+evt_obj.columnIndex+", "+evt_obj.itemIndex+")";
 trace("The cell at "+cell_str+" has been clicked");
};


Traza todas las propiedades del evt con un for in para ver lo que te encuentras
Para cambiar la forma en que se muestran las cosas en el datagrid, tienes que usar un Cellrenderer, hay tutoriales de eso en este mismo sitio

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Abr 2008 07:07 am
Probé el código que me dijiste y funciona perfectamente pero me saca la posición de la celda, (0,0) (0,1) (0,2); Quizá me he explicado un poco mal, lo que yo quería es obtener lo que contiene dicha celda, el texto por así decirlo.

De todas maneras muchas gracias porque si no consigo lo del texto con la posición podré hacer algo.

Pero si sabes como sacar el texto de la celda ¿me puedes decir como se hace? debe de ser una tontería pero no dejo de darle vueltas y no funciona.

Gracias y un saludo

Por rubesk

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Abr 2008 09:41 am
Bueno, une lo que pusiste antes con lo que agregue y sale algo así:

myGrid.getItemAt (evt_obj.itemIndex).noticias

Donde myGrid es el nombre de instancia de tu datagrid

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Abr 2008 10:39 am
Gracias, de esa forma funcionó perfectamente.

A riesgo de parecer pesado, tengo un pequeño problema a raiz de esto.

Si le pongo un Trace me saca, efectivamente, el valor del campo; si lo meto en una variable y en el mismo fotograma le hago
un Trace a la variable también funciona.

El problema es que cuando intento "pillar" dichas variables desde el siguiente fotograma, me saca "undefined", es como si no captase bien las variables; he probado hacerlas globales por si acaso pero sigue dando el mismo error.

¿Alguna idea?

Por rubesk

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Abr 2008 11:03 am
dgListener es un objeto que encapsula el dato, si trazas this estás en object. Variables tipo _root.loquesea (aunque la encapsulación .... bien, gracias) deberían funcionar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Abr 2008 07:13 am
He probado lo ultimo que me pusiste, lo del _root. delante de la variable pero no funcionó, me sigue dando el mensaje de indefinido



Código :

<textarea>
(...)
listenerObject = new Object(); 
listenerObject.cellPress = function(evt){ 
noticia_seleccionada = evt.target.getItemAt (evt.target.selectedIndex).noticias;
cuerpo_seleccionado = evt.target.getItemAt (evt.target.selectedIndex).cuerpo;
_root.variable = noticia_seleccionada;
_root.variable2= cuerpo_seleccionado;

gotoAndPlay(2);
} 
datagrid1.addEventListener("cellPress", listenerObject) 

   
               }
   }
      



</texarea>
<


y luego en la siguiente pagina simplemente:

Código :

<textarea>


trace (variable) //tambien probé por si acaso con trace(_root.variable) pero nada

</texarea>
</textarea>[/code]


Pero sigue sin funcionar, no se que puede ser

Por rubesk

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Abr 2008 08:35 am
Vale, ya lo conseguí y realmente era una tontería, nada que ver con la variable en si. Simplemente en la parte del codigo:


cuerpo_seleccionado = evt.target.getItemAt (evt.target.selectedIndex).cuerpo;
_root.variable = noticia_seleccionada;
_root.variable2= cuerpo_seleccionado;
gotoAndPlay(2);
}
datagrid1.addEventListener("cellPress", listenerObject) //Esta frase la metias detrás del siguiente "corchete"

}
}



Y entonces funcionaba sin más, capturaba la variable y funcionaba.

Gracias por todo, si tu ayuda no habría podido continuar con el proyecto

Por rubesk

10 de clabLevel



 

msie

 

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