{{indexmenu_n>1}} ===== Refresh ===== \\ Para evitar tener que repintar toda la pantalla y puesto que algunas pueden ser bastante complejas, se han implementado herramientas que nos permiten concretar qué propiedades queremos refrescar, de forma que se vuelvan a evaluar las condiciones de visibilidad, colores, márgenes, etc, únicamente para las propiedades especificadas.\\ \\ En caso de un **FRAME FLOTANTE**, si se refresca un frame, se refrescan sus hijos directos, **NO** los hijos de sus hijos.\\ \\ Los prop **type="NC"** (**Check**) SIEMPRE refrescan toda la pantalla.\\ \\ El NODO **** NO refresca la pantalla cuando cambia el valor de algún campo, si queremos refrescar la pantalla hemos de especificar el ATRIBUTO onchange="refresh(Propiedades_A_Refrescar)" __en la propiedad que provoca el cambio__. Por lo dicho anteriormente, cuando tenemos un campo de enlace con otra colección (LUPA), hemos de especificar el atributo onchange="refresh(Propiedades_A_Refrescar)" al campo de enlace //IDLOQUESEA// que es el que cambia de valor y provoca el cambio del MAP_ o bien utilizar el método de script ui.refresh "Propiedades_A_Refrescar".\\ \\ ==== Atributos en PROP ==== === onchange === En los diferentes prop tenemos a nuestra disposición el atributo **onchange** para indicar qué queremos refrescar cuando cambie el valor del prop: OJO, **onchange="refresh"**, refresca TODA la colección, incluidas las pestañas que no están visibles. === postonchange === El postonchange es un atributo que se ejecuta cuando volvemos de una edición con **pushvalue** ó tras editar un registro de un contents. En los botones (type="B") y en los contents (type="Z") se puede poner también un atributo **postonchange** que puede tener los mismo valores que se han descrito para el atributo **onchange**.\\ \\ Éste atributo **postonchange**, define qué queremos hacer cuando volvamos de una ventana de edición lanzada con un pushvalue ó en el caso de un contents, cuando volvemos de editar un registro de éste. ==== Atributos en NODO ==== En algún nodo que vayamos a ejecutar, podemos especificar que tras la ejecución NO se refresque toda la pantalla (Por defecto se refresca).\\ \\ === refresh === Para que NO refresque toda la pantalla sino que únicamente se refresquen las propiedades que nosotros queramos, se ha de especificar **refresh="false"** como atributo del nodo a ejecutar puesto que por defecto su valor es "true". === refresh-prop === En combinación con el atributo refresh="false", hemos de especificar también el atributo **refresh-prop** para indicar las propiedades que queremos refrescar. ... === refresh-owner === Si el nodo que se ejecuta está en algún contents, podemos indicarle que refresque **una propiedad del objeto padre** con el atributo **refresh-owner**.\\ \\ El atributo **refresh-owner** puede especificarse en cualquier nodo de un contents, tales como **,, , ...** ... =====SCRIPT===== ==== Refresh con SCRIPT ==== En lugar de hacerlo con atributos en el XML, podemos indicarle el refresco mediante un método script "**refresh**" de AppData .Userinterface, indicando igualmente las propiedades que queremos refrescar. ui.refresh "PROP1,PROP2" //Si lo hacemos con VBSCRIPT. ui.refresh("PROP1,PROP2"); //En caso de hacerlo en JAVASCRIPT. ==== RefreshAll ==== Para evitar tener que indicar por separado todos los prop que queremos refrescar en una vista, se ha implementado el método RefreshAll , el cual refresca todos los hijos(sólo el primer nivel), de la vista o del frame que se le pase como parámetro.\\ \\ // Con esto le decimos que refresque todos los hijos contenidos en el Frame "floatingRespuesta" ui.getView(self).refreshAll("floatingRespuesta"); ==== refreshValue. Sólo el valor ==== \\ Si lo que cambia es **únicamente el valor** de alguna propiedad y **el aspecto visual no varía** (fuente, visibilidad, colores de primer plano y fondo, etc), podemos utilizar el método "refreshValue" de AppData .userInterface que es mucho más rápido y eficiente.\\ \\ ui.refreshValue "PROP1,PROP2" //Si lo hacemos con VBSCRIPT ui.refreshValue("PROP1,PROP2"); //Si lo hacemos con JAVASCRIPT ==== Refresh de un CONTENTS ==== Podemos refrescar únicamente un registro de un contents en lugar de refrescar el contents completo. Para ello podemos hacer uso de dos métodos de appData.userInterface, que son ui.refreshContentRow y ui.refreshContentSelectedRow === ui.refreshContentRow === En el nodo que vamos a ejecutar, hemos de poner el **refresh="false"** para que NO refresque todo, únicamente lo que nosotros especifiquemos. === ui.refreshContentSelectedRow === \\ En el nodo que vamos a ejecutar, hemos de poner el refresh=“false” para que NO refresque todo, únicamente lo que nosotros especifiquemos.\\ \\ En este caso, se ejecuta en el **selecteditem** del contents, de forma que el único parámetro que tenemos que pasarle es el name del prop del contents que queremos refrescar, NO es necesario pasarle el id del array con la posición del registro que queremos refrescar como era el caso del método anterior, puesto que el selecteditem se ejecuta sobre el registro que ha seleccionado el usuario.\\ \\ Nótese que en los ejemplos de refresco de los contents, únicamente se ha actualizado la apariencia visual en pantalla, en ningún momento se han salvado los datos.