Scriptcase 9: Aplicación Maestro Detalles, Refresh del Detalle desde El Maestro.

736 views
Skip to first unread message

Fausto

unread,
May 4, 2020, 2:52:45 PM5/4/20
to comunidad-scrip...@googlegroups.com
Refrescar el grid de detalle desde el maestro al presionar un botón o al disparar algún evento en uno de los campos contenidos en el maestro, se logra utilizando algo de javaScript de una forma muy sencilla, en caso que se quiera hacer desde un botón, estos deben de ser botones Ajax o JavaScript, en el caso de ser un botón JavaScript los código de actualización puede colocarse directamente en el botón, de ser javaScript será necesario hacerlo a través  de un método utilizando la macro sc_ajax_javascript, de igual forma sería con los eventos de los campos que deberían de ser evento Ajax para una mayor flexibilidad, puesto que esto permiten la utilización de códigos PHP y a la vez la ejecución de métodos javascript vía la macro, una forma de hacerlo es la siguiente:


1.- Primero creamos el método JavaScript que se encarga de hacer la actualización del Grid , e la interface de desarrollo de SC en el nodo Programación -> Método JavaScript, crearemos el método detalles_refresh:
// Alternativa #1: Formulario Master Método JavaScript: detalles_refresh
// con esta técnica no necesitas saber el nombre del iFrame que se quiere actualizar

try {

var alliframes = document.querySelectorAll("iframe");
alliframes.forEach(function(objiframe) {
objiframe.contentDocument.location.reload(true);
});
}
catch(err) {
console.log('Error Refrescando detalles: '+err.message);
}

Este método actualiza cada uno de los elemento iFrame contenido en la aplicación, otra forma de hacerlo sería ubicar el ID del iFrame que se quiere actualizar  por el inspector de código de Chrome  y colocar el siguiente código en el método javaScript

// Alternativa #2: Formulario Master Método JavaScript: detalles_refresh
// con esta técnica  necesitas saber el nombre del iFrame que se quiere actualizar
// En el inspector de código buscar (Ctrl+F) "<
iframe
", para localizar el elemento iframe que se quiere actualizar.

document.getElementById('nmsc_iframe_liga_form_dbo_tmppos_det').contentDocument.location.reload(true);




2.- Invocar el método detalles_refesh desde un evento_ajax (bien podría ser desde un botón Ajax depende de su necesidad), en este caso utilizaremos el evento onBlur para disparar la actualización del grid de detalles:
Debemos de crear en el nodo Formulario -> Eventos Ajax de un campo especifico el siguiente código.

// Formulario Master Evento Ajax: campo04_onBlur

// Defina su códificación para el insert o update de los registros en la tabla detalle.
$insert_sql = 'INSERT INTO tabla_detalles (campoID, campo02, campo03, campo04)'.
" values ({campoID}, {campo02}, {campo03}, {campo04} )";

// Utilizo sc_select  para poder capturar el error SQL.
sc_select(dataset, $insert_sql);
if (false == {dataset})
{
   echo 'Error: '.{dataset_erro};
}

// Actualizar los Detalles
sc_ajax_javascript('detalles_refresh');




Eso es todo, con esos dos sencillos pasos se logra actualizar el GRID de un maestro-detalle desde el formulario maestro.

Espero esto sirva de ayuda.








Jairo Salguero

unread,
Aug 14, 2024, 1:29:58 PM8/14/24
to Comunidad ScriptCase Latino
Alguien tendrá un ejemplo maestro detalle para una factura, pero en un formulario blank,
que al agregar productos a la compra se vaya actualizando el detalle y sus totales.
Saludos
Reply all
Reply to author
Forward
0 new messages