Tengo un ci con el modelo de eventos ABM / CRUD y con un formulario_ml con su evento implicito modificacion, cuando hago clic en el botón guardar no ejecuta el evento evt__formulario_ml__modificacion.
Este es el código de evt__formulario_ml__modificacion:
Ya descubrí cual es el error, estaba tratando de obtener el estado de un ef_oculto en js con this.ef('id_aporte_pendiente').ir_a_fila(fila).get_estado(); pero me daba error de undefined, cómo tengo que poner para obtener el estado de un ef_oculto de un formulario_ml en js?
los ef_oculto no viajan al cliente ya que suelen ser meramente un mecanismo para conservar valores entre pedidos de pagina, por lo que no salen nunca del servidor.
Respecto del problema con los eventos implícitos, te iba a decir que chequees no tener ningún error JS ya que ello puede influir en los parámetros que se envían al servidor al hacer el submit.
Sí, ese era el problema, había un error JS, estaba tratando de acceder a un ef_oculto con this.ef('id_concepto_pendiente').ir_a_fila(fila).get_estado() y ya me dijiste que el ef_oculto no es accesible desde JS.
La duda que tengo es si hay alguna forma de hacerlo accesible desde JS pero que no sea visible en el formulario_ml, te agradecería si me podes pasar el código o la forma de hacer eso en toba_editor.
pareciera que es simplemente un dato de lectura, por que no lo envias como tal en la salida del formulario?… digamos, no es algo que debe volver al server, tranquilamente podes incluirlo en algun arreglo JS.
Es el unico dato que tenes en estas condiciones?.. por que no dejarlo directamente en la invocacion que hace el boton?
Gracias por la respuesta @richard, en realidad si necesito que vuelva al server porque lo guardo en una tabla de la base de datos, pero quiero saber cómo puedo hacer para tenerlo disponible en js sin que esté visible en el formulario porque lo uso como parámetro para una función ajax, pero es la clave principal de una tabla así que necesito que no se vea en el formulario.
podes tenerlo como un arreglo JS si queres… pero igualmente el tema es que esta disponible para cualquier script que se este corriendo. Una opcion es que hagas un mapeo y mandes a JS los valores mapeados nomas, luego en la funcion ajax recuperas el valor original del mapeo previo a hacer la consulta.
Una pregunta, la columna se llama id_importe_pendiente no es mas sencillo enviar el importe directamente?… calculo que lo haces por un tema de tener el dato actualizado… pero entre la invocacion ajax y lo que sea que hagas hasta que impactas en la bd, eso puede cambiar igual.
No, la columna se llama id_concepto_pendiente que está en la tabla conceptos_pendientes, necesito de alguna forma obtener el importe que está guardado en esa tabla para compararlo con el que se ingresa por teclado para no ingresar un importe mayor y al actualizar el registro de la tabla conceptos_pendientes me quede un número negativo, ese número tiene que ser mayor o igual a 0.
Explicame un poco como puedo hacer un array js, así hago la comparación del ef_numero con el array js y no necesito tener el ef_oculto id_concepto_pendiente.
Ya lo solucioné mandando la consulta completa a través del método de ajax y recibiéndola en js con $respuesta→set_datos($datos); y haciendo la validación usando el array data del método js atender_respuesta.
Este es el código js:
{$this->objeto_js}.evt__importe__validar = function(fila)
{
var parametros = {};
this.controlador.ajax('get_importe', parametros, this, this.atender_respuesta, fila);
}
{$this->objeto_js}.atender_respuesta = function(data, fila)
{
var ef_importe = this.ef('importe').ir_a_fila(fila);
var importe = ef_importe.get_estado();
var necesita_chequeo = importe !== null;
if(necesita_chequeo && data){
if(importe > data[fila].importe){
ef_importe.set_error('Debe ingresar un importe menor o igual a ' + data[fila].importe.toString());
ef_importe.set_estado(data[fila].importe);
return false;
}
}
return true;
}
Y este es el código ajax:
function ajax__get_importe($parametros, toba_ajax_respuesta $respuesta)
{
$datos = $this->get_datos_cliente();
$respuesta->set($datos);
}
En mi oficina actualmente tenemos todos los sistemas desarrollados en Toba 2.7 y queríamos consultar si existe alguna forma de migrarlos a Toba 3.3, o si necesariamente hay que realizar una instalación limpia y luego ir replicando las funcionalidades.
Además, Claudio Canzoneri, de la Municipalidad de Corrientes, me comentó que te conoce y que perdió el acceso al foro; por ese motivo me pidió que me contacte con vos por este medio.
Por favor me pueden responder esta pregunta? Ya me estoy cansando de esperar, esto lo hago por trabajo para ganar plata, es mi profesión, no es un hobbie, así que por favor respóndanme lo más pronto posible.