Se me presenta la siguiente situación: tengo una pantalla compuesta por un formulario que actúa como filtro (el cual tiene definido dos eventos: filtrar y cancelar) y un fomulario ml donde se listan los registros que coicidan con lo ingresado en el filtro. El ml tiene definido un evento implícito (el cual se ejecuta en cada pedido de página), lo que necesitaría hacer es que este evento implícito NO se ejecute cuando el usuario haga clic tanto en el filtrar como en el cancelar del filtro, es decir que SOLO se ejecute en caso de que se haga clic sobre el evento procesar (que se encuentra a nivel del CI).
Esto lo necesito debido a que la información que se lista en el ml es mucha y a la demora de la consulta sql tengo que sumarle, en el caso de querer filtrar por segunda vez consecutiva (es decir que en el ml haya datos desplegados), la recorrida línea a línea que hace este evento implícito.
Hola, la solución por la que opté fue la siguiente: le quité la propiedad de implícito al evento modificación del ml y solo invoco a dicho evento en caso de hacer clic sobre el evento procesar que se encuentra a nivel del CI, el código de invocación del evento quedó de la siguiente manera:
function extender_objeto_js()
{
echo "
//---- Eventos ---------------------------------------------
{$this->objeto_js}.evt__procesar = function()
{
//Disparo el evento modificación del ml manualmente para evitar su ejecución en cada pedido de página
this.dep('form_ml').set_evento(new evento_ei('modificacion', true), true);
}
";
}
Escucho comentarios para mejorar la manera de hacerlo.
esta perfecto lo que hiciste, no hay manera de hacer que un evento implicito se dispare ocasionalmente… poder hacerlo seria un contrasentido a la propia definicion de ‘implicito’.
Gracias por subirlo, asi le queda a alguien que ande necesitando algo parecido :).