Re: [usercontrols] Programación javascript sobre grilla

Buenísimo,

No conocía los detalles, pienso que entonces podría usar onDOMReady para ejecutar mi código ya que preciso que esté gx y el Div Container.

Gracias,
Pablo


From: "Leonardo Silvestri" <leosil2@gmail.com>
To: usercontrols@gxtech.com.uy
Sent: Viernes, 28 de Septiembre 2012 16:39:44
Subject: Re: [usercontrols] Programación javascript sobre grilla

aca esta explicada la diferencia en YUI

Saludos,
Leonardo

2012/9/28 Leonardo Silvestri <leosil2@gmail.com>
perdon, recien miro los emails del foro.

Si, excelente, de esa forma lo solucionás. 

Una salvedad: No se para el caso del YUI, pero generalmetne los frameworks tienen un "onload" o "load" y un ready, que se ejecutan en momentos diferentes. 

El "ready" es cuando se cargó el arbol del DOM por completo , el "onload" es cuando los elementos se renderizaron.
El caso que los diferencia bien es cuando tenes imagenes a cargar, el ready no espera a que esas imagenes esten renderizadas en pantalla (que puede consumir varios segundos más)

Por ej
 en JQuery tenes $(document).ready(function(){......... o $(function()..... que son lo mismo,
 y además existe el $(elemento DOM).load(function(){............, que se ejecuta cuando todos los subelementos son renderizados.

$(window).load.. es equivalente a window.onload





2012/9/28 Pablo Moleri <pablo@cybernet.com.uy>
Me autorespondo para que la solución quede aquí.

En base a lo que me pasó Leonardo.
Usando YUI 3 lo que hice para suscribir una función a la grilla fue lo siguiente:

YUI().use('node-core', 'node-base', function(Y) {

    // Espera a que la pantalla se cargue, para que esten disponibles el Container y la variable 'gx'
    Y.one(window).on('load', function(e) {
   
        // La función check, verifica si está la tabla y le agrega un flag 'fixed', para saber que la función ya fue ejecutada.
        div = Y.one("#GridContainerDiv");
        var check = function(e) {
            var table = div.one("table");
            if (table && !table.get("fixed")) {
                table.set("fixed", "true");
                init_drag_drop();
            }
        }
   
        // Suscribe la función check a los distintos eventos
        gx.fx.obs.addObserver("gx.onload", window, check);    // Cuando la página terminó de cargar
        gx.fx.obs.addObserver("gx.onafterevent", window, check);    // Después de un evento
        gx.fx.obs.addObserver("grid.onafterrefresh", window, check);    // Después de un autorefresh de la grilla
   
        // Hace un check ahora por si la grilla ya se hubiera cargado.
        check();
    });

});


mifuncion(table) {
   ...
}

Acá dejo un link a la documentación que encontré:
SAC #26806: Mecanismo de "observer" en el gxgral
http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,4,61,O,S,0,,26806

Saludos,
Pablo

Pablo Moleri
Cybernet




From: "Pablo Moleri" <pablo@cybernet.com.uy>
To: usercontrols@gxtech.com.uy
Sent: Jueves, 27 de Septiembre 2012 10:58:51
Subject: Re: [usercontrols] Programación javascript sobre grilla

Gracias Leonardo,
Tu respuesta es infinitamente útil, le estaba dando vueltas por el lado de Mutation Events, pero esto es mucho mejor!

De paso te hago otra consulta, por alguna razón mi javascript (agregado con JScriptSrc.Add) queda antes del de GX y parecería que cuando ejecuta mi javascript todavía no está declarada la variable "gx".
Podría subscribirme al evento onload de la página, y ejecutar recién allí mi código, pero te pregunto porque capaz que conocés una forma más fácil.

Saludos,
Pablo


From: "Pablo Moleri" <pablo@cybernet.com.uy>

To: usercontrols@gxtech.com.uy
Sent: Miércoles, 26 de Septiembre 2012 11:55:40
Subject: [usercontrols] Programación javascript sobre grilla

Hola,

En realidad no estoy queriendo desarrollar un user control, pero pregunto en este foro porque es el tipo de cosas que hacen los user controls.

La pregunta es:
¿Cómo ejecutar una función javascript cada vez que se dibuja la grilla?

Explicación:
Estoy usando YUI para hacer drag&drop sobre las filas de una grilla de forma de poder reordenarlas como uno quiere. Para esto necesito ejecutar una función javascript que inicializa el drag&drop, pero como la grilla se puede refrescar sin recargar la pantalla, quería saber como puedo enganchar mi función de manera que la inicialización se ejecute cada vez que se refresca la grilla.

Gracias,
Pablo Moleri



0 Response to "Re: [usercontrols] Programación javascript sobre grilla"

Publicar un comentario