cargar formulario multilinea segun datos de ef_editable_fecha de otro formulario

Señores:
Tengo la necesidad de resolver el siguiente problema:

Necesito cargar un ML con filas de acuerdo al valor de un ef_editable_fecha que está en otro formulario, todos en un mismo CI y en una única pantalla.

Tengo en le Formulario dos botones “anterior” y “siguiente” que me van cambiando las fechas y al extender el Formulario tengo la siguiente funcion:

        {$this->objeto_js}.evt__sol_fecha_turno__procesar = function(es_inicial)
        {
            //--- Construyo los parametros para la carga, en este caso son los valores del form
            var parametros = this.get_datos();
            
            //--- Hago la peticion de datos al server, la respuesta vendra en el método this.cargar_datos
            this.controlador.ajax('cargar', parametros, this, this.cargar_datos);
            
            //--- Evito que el mecanismo 'normal' de comunicacion cliente-servidor se ejecute
            return false;
            }
            /**
            * Acción cuando vuelve la respuesta desde PHP
            */
            {$this->objeto_js}.cargar_datos = function(datos)
            {
            var datos_m = this.controlador.dep('datos_t').get_filas(array(array('tur_fecha_turno','==', date(datos[0]), 'yyyy/mm/dd')), true);
            this.controlador.dep('ml_turnos').set_estado(datos_m);
            }

El llamado A AJAX que me devuelve todos los registro con dicha fecha:

    function ajax__cargar($parametros, toba_ajax_respuesta $respuesta)
    {
        $fech = $parametros['sol_fecha_turno'];

        $cadena = "tur_fecha_turno = '" . $fech . "'";
        $sql = 'SELECT tur_fecha_turno FROM turnos WHERE ' . $cadena . ' ORDER BY tur_fecha_turno ASC';
        $reg = toba::db('estetica')->consultar_fila($sql);
        //
        $fe = $reg['tur_fecha_turno'];
        $respuesta->set(array($fe));
       
    }

La pregunta en definitiva es: Cómo seteo el ML con estos registros…? cada ves que cambia la fecha…?

P/D: El ML se carga desde un DT_tabla y el los ef del Formulario desde un DR

Hola Serge,

la operatoria con el ML es ‘similar’ a lo que harias con un form comun… pero no es igual. Dicho esto:


        {$this->objeto_js}.evt__sol_fecha_turno__procesar = function(es_inicial)
        {
            //--- Construyo los parametros para la carga, en este caso son los valores del form
            var parametros = this.get_datos();
            
            //--- Hago la peticion de datos al server, la respuesta vendra en el método this.cargar_datos
            this.controlador.ajax('cargar', parametros, this, this.cargar_datos);
            
            //--- Evito que el mecanismo 'normal' de comunicacion cliente-servidor se ejecute
            return false;
            }

Ahi veo que el procesar del campo fecha te dispara siempre un pedido ajax… y no unicamente cuando es cambiado.
La funcion cargar_datos la podrias definir en el controlador y te ahorras una indireccion al navegar las dependencias, solo tendrias que cambiar el ultimo parametro de la llamada ajax.


            /**
            * Acción cuando vuelve la respuesta desde PHP
            */
            {$this->objeto_js}.cargar_datos = function(datos)
            {
            var datos_m = this.controlador.dep('datos_t').get_filas(array(array('tur_fecha_turno','==', date(datos[0]), 'yyyy/mm/dd')), true);
            this.controlador.dep('ml_turnos').set_estado(datos_m);
            }
 

Bien ahora la parte distinta, en JS los datos no se setean como en PHP (osea a nivel de form) sino que tenes que llegar hasta el ef en cuestion que queres cambiar, por tanto… la funcion cambiar_datos te deberia quedar mas o menos asi.


            /**
            * Acción cuando vuelve la respuesta desde PHP
            */
            {$this->objeto_js}.cargar_datos = function(datos)
            {
                 var filas = this.filas();
                 for (id_fila in filas) {
                        this.ef('tur_fecha_turno').ir_a_fila(filas[id_fila]).set_estado(datos[0]);
                 }        
            } 

Si tuvieras mas de un ef… o muchas filas, quizas te conviene eliminar todas las filas y crearlas nuevamente con los valores que te llegan desde el servidor, asi no tenes que andar mapeando id_filas al indice del arreglo datos.

Saludos