Comunidad de diseño web y desarrollo en internet online

AYUDA. listener en datagrid

Citar            
MensajeEscrito el 13 Sep 2005 05:21 am
Coloque un post hace unos dias preguntando como podia darle el formato a las celdas del datagrid, ese problema ya lo resolvi. Tengo un datagrid que coloca imagenes y multilineas, hasta ahora todo iva bien. Pero ahora llego la etapa en que queria que al hacer click sobre una fila se abriera un pop up. EL codigo del pop no es relevante, pero me ha sacado el jugo el detalle que el DG tenga un listener.
Este es mi problema. Todos los ejemplos de DG usaban conectores, yo no queria esos asi que use modifique el que aparece en el tutorial de elecash. Es sencillo de modificar y carga los datos como yo queria.
Ya inserte todas las modificaciones y estaba a punto de terminar pero me he encontrado conque todos los ejemplos de listener que hay no le sirven a este ejemplo. Estoy agotado y solamente necesito resolver ese detalle para tener esto listo.AYUDA

aqui esta el codigo del mi archivo... a ver si alguien ve una forma de hacer la referencia con los listener.

Código :

import mx.controls.gridclasses.DataGridColumn;

//Cargamos el XML
calendario = new XML();
calendario.ignoreWhite = true;
calendario.onLoad = function (success){
   if (success){
   //Creamos los arrays donde iran los datos
      largo = calendario.firstChild.childNodes.length;
      tareas = new Array(largo);
      dias = new Array(largo);
      indice = new Array(largo);
      
      //Llenar los arrays
      for (i=0; i<largo; i++){
         tareas[i] = calendario.firstChild.childNodes[i].attributes.tarea;
         dias[i] = calendario.firstChild.childNodes[i].attributes.fecha;
         indice[i] = i;
      }
      
      llenarDataGrid();
   }
   else{
      trace("No se pudo cargar el XML");
   }
}
calendario.load("DataGrid.xml");


/************* FUNCIONES ****************/

function llenarDataGrid(){
   //Atacheamos nuetro componente

   //Propiedades
   misCeldas.rowHeight = 100;
   misCeldas.editable = false;
   misCeldas.headerHeight = 16;
   misCeldas.resizableColumns = true;
   misCeldas.selectable = true;
   misCeldas.showHeaders = true;
   misCeldas.sortableColumns = true;

   
   //Le asignamos un proveedor de datos
   losDatos = new Array();
   misCeldas.dataProvider = losDatos;
   
   //Metemos los datos en el ComboBox
   for (i=0; i<tareas.length; i++){
      losDatos.addItem({ Tarea: tareas[i], Fecha: dias[i], Indice: indice[i] });
   }
   
   //Propiedades de las columnas
   misCeldas.getColumnAt(0).cellRenderer = "LoaderRenderer";
   misCeldas.getColumnAt(1).cellRenderer = "EleMultiLinea";
   misCeldas.getColumnAt(1).width = 75;
   misCeldas.getColumnAt(2).width = 50;
:crap:

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 13 Sep 2005 07:35 am
El hecho de utilizar listeners no debe hacer que te rompas la cabeza, simplemente es otra forma de hacer lo que has hecho siempre. Por ejemplo, tu normalmente haces esto con un botón o movieclip:

Código :

mi_btn.onPress = function(){
        //Lo que sea
}


Con un componente es algo diferente, sigue estos pasos y verás como te funciona.

1) Ves a la ayuda de Flash y mira los eventos del componente, los encontrarás en donde pone la clase, en caso del DataGrid sería.

Using Components --> Components Library --> Datagrid component --> Datagrid class

Al final del todo verás que pone los eventos, cogeremos el change que es el más típico.

DataGrid.change >>> Broadcast when an item has been selected.


Una vez sabes el evento que quieres activar, crear el listener es facilísimo.

Primero creas un objeto que le puedes llamar como quieras, luego asignas ese listener al componente y por último creas el evento. Resultado:

Código :

//crear el listener
alCambiar = new Object();
//asignar el listener
mi_dg.addEventListener("change", alCambiar);
//Crear el evento
alCambiar.change = function(objeto){
      //Acciones
}


Si te ha quedado alguna duda pues ya me lo dices y listos.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 13 Sep 2005 02:38 pm
Gracias por ayudarme con esto. Al decir verdad no habia tenido problemas en usar listener, sino que he usado tantos formatos que ya estoy agotado. Mi porblema no es con el listener, sino con el DG.
Cuando inserto el codigo del listener uso trace para ver el resultado pero lo que consigo es un undefined
por ejemplo si uso el ejemplo de listener que encontre en sephiroth

Código :

var cellObj:Object = {};

cellObj.cellPress = function( evt )
{
   seleccion = evt.target;
   // valor del item seleccionado
   trace ( seleccion.selectedItem.nombre);
   // indice numerico seleccionado
   trace( seleccion.selectedIndex);
}

dataGrid.addEventListener ("cellPress", cellObj );


ENTONCERS RECIBO
undefined
0
undefined
1
undefined
2

y asi, donde undefined es el valor que quisiera sacar..

mi problema es como apuntar a la celda.

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 13 Sep 2005 05:35 pm
Ah, ok, entonces prueba esto.

Código :

evt.target.getItemAt(evt.target.selectedIndex).NombreColumna


Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 13 Sep 2005 07:53 pm
probe asi, pero pasa igual...

Código :

var cellObj:Object = {};

cellObj.cellPress = function( evt )
{
   seleccion = evt.target;
   // valor del item seleccionado
   trace (evt.target.getItemAt(evt.target.selectedIndex).dias);
}

misCeldas.addEventListener ("cellPress", cellObj );


aun recibo "undefined"

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 13 Sep 2005 08:04 pm
estoy trabajando en una variacion, luego puedo dar mas detalles, pero nuevamente nunca salen las cosas como deben.
Cuando pruebo mi swf en mi maquina todo corre exelente. pero al subirlo al servidor la celda de imagen que uso con loader en el cellrender, me da problemas, me sale mas grande de lo que debe.

pueden ver el ejemplo en:[url]
http://www.casassonadas.com/demo02/test.html[/url]

y aqui esta un screen del problema

NOTA IMPORTANTE solo ocurre en internet explor mozilla no le pasa

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 13 Sep 2005 09:37 pm
Es el error de toda la vida de mierda del puto moviecliploader!! XD XD XD

Para eso lo unico que puedes hacer es coger y poner las imagenes al tamaño del ancho de la celda, creo que no hay otra.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 13 Sep 2005 10:10 pm
Ja ja ja, bueno seguire el consejo de un experto. Muchas gracias, creo que con esto Dios mediante ya podre avanzar.
No sabia que los componentes vinieran con errores. Es bueno saber que el error ya no dependia de mi.
En verdad gracias por la ayuda.

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 14 Sep 2005 07:31 am
Sobre esto que me decías la otra vez...

Código :

trace (evt.target.getItemAt(evt.target.selectedIndex).dias);


Pon en vez de "dias" el nombre de columna, es decir, lo que te sale arriba del todo de la columna. Por ejemplo, en la screenshot que muestras ahi, si pones esto:

Código :

trace (evt.target.getItemAt(evt.target.selectedIndex).Detalles);


Devolvería "san antonio".

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 14 Sep 2005 01:10 pm
Si, ahora si funciono...
Al parecer en mi primer modelo es un poco mas dificil de apuntar.
Pero como no encontraba forma de hacerlo funcionar me fui por la segunda opcion, lo que no me gustaba de mi segunda opcion es que tenia que empezar de cero y que tenia que usar el conector xml el dataset me parecia mas engorroso. Al final consegui implementar la misma funcionalidad, pero con un metodo diferente, que me permitia usar los ejemplos de listener que encontraba por ahi.
Voy a ver si de repente posteo toda mi odisea para llegar a este punto, lo unico es que el foro de CL no permite atachments. Vere como resuelvo sin eso. Me a agradado encontrar un foro asi en mi idioma.

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 14 Sep 2005 05:57 pm
Pues he visto el trabajo y queda muy bien. Yo utilicé el cellrenderer de Phill, que lleva una "clase" que puedes utilizar html para poner formatos con css, enlaces a páginas web, y por supuesto imágenes. A mí me fue de maravilla, si quieres te paso el trabajo que hice.

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 14 Sep 2005 08:24 pm
me gustaria verlo, tambien trate de usar ese cellrender pero me dio algunos problemas y trate de ir por uno mas sencillo.

Por aolba

31 de clabLevel



Genero:Masculino  

resolvedor de problemas

firefox
Citar            
MensajeEscrito el 15 Sep 2005 10:58 am
Vale, esta tarde o mañana lo cuelgo, y pondré el link aquí mismo. Saludos!

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox

 

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