Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
wiki:2.-desarrollo-app:2.3.-codigo:f.-refresh:start [2018/01/31 15:20] – [refreshValue. Sólo el valor.] patricia | wiki:2.-desarrollo-app:2.3.-codigo:f.-refresh:start [2021/05/13 13:42] (actual) – [ui.refreshContentSelectedRow] ary | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | {{indexmenu_n> | ||
+ | |||
+ | ===== 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, | ||
+ | \\ | ||
+ | <WRAP center round important 70%> | ||
+ | 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=" | ||
+ | \\ | ||
+ | El NODO **< | ||
+ | </ | ||
+ | Por lo dicho anteriormente, | ||
+ | \\ | ||
+ | <code xml> | ||
+ | <prop name=" | ||
+ | <prop name=" | ||
+ | </ | ||
+ | ==== 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: | ||
+ | <code xml> | ||
+ | <!-- Refresca la pantalla completa cuando cambie el valor de la propiedad --> | ||
+ | <prop name=" | ||
+ | |||
+ | <!-- Refresca únicamente las propiedades especificadas como parámetro (separadas por comas) --> | ||
+ | <prop name=" | ||
+ | |||
+ | <!-- Podemos hacer 2 cosas, ejecutar un nodo y posteriormente refrescar 2 propiedades... --> | ||
+ | <prop name=" | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | OJO, **onchange=" | ||
+ | </ | ||
+ | |||
+ | === postonchange === | ||
+ | El postonchange es un atributo que se ejecuta cuando volvemos de una edición con **pushvalue** ó tras editar un registro de un contents. | ||
+ | <code xml> | ||
+ | <!-- Sólo para Botones y contents. --> | ||
+ | |||
+ | <prop name=" | ||
+ | |||
+ | <prop name=" | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | En los botones (type=" | ||
+ | \\ | ||
+ | Éste atributo **postonchange**, | ||
+ | </ | ||
+ | |||
+ | ==== 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=" | ||
+ | |||
+ | === refresh-prop === | ||
+ | En combinación con el atributo refresh=" | ||
+ | <code xml> | ||
+ | < | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | === 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 **< | ||
+ | <code xml> | ||
+ | <!-- el refresh-owner se aplica a todo aquello que tenga una " | ||
+ | <!-- < | ||
+ | |||
+ | < | ||
+ | ... | ||
+ | </ | ||
+ | </ | ||
+ | =====SCRIPT===== | ||
+ | |||
+ | ==== Refresh con SCRIPT ==== | ||
+ | En lugar de hacerlo con atributos en el XML, podemos indicarle el refresco mediante un método script " | ||
+ | <code javascript> | ||
+ | ui.refresh " | ||
+ | |||
+ | ui.refresh(" | ||
+ | </ | ||
+ | |||
+ | ==== RefreshAll ==== | ||
+ | Para evitar tener que indicar por separado todos los prop que queremos refrescar en una vista, se ha implementado el método | ||
+ | \\ | ||
+ | <code javascript> | ||
+ | // Con esto le decimos que refresque todos los hijos contenidos en el Frame " | ||
+ | ui.getView(self).refreshAll(" | ||
+ | </ | ||
+ | ==== 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, | ||
+ | \\ | ||
+ | <code javascript> | ||
+ | ui.refreshValue " | ||
+ | |||
+ | ui.refreshValue(" | ||
+ | </ | ||
+ | |||
+ | ==== 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, | ||
+ | === ui.refreshContentRow === | ||
+ | En el nodo que vamos a ejecutar, hemos de poner el **refresh=" | ||
+ | <code xml> | ||
+ | < | ||
+ | <action name=" | ||
+ | < | ||
+ | var mContentUsuarios = self.getContents(" | ||
+ | mContentUsuarios.loadAll(); | ||
+ | |||
+ | <-- Con el getItem(1) cogemos el segundo registro del contents, el primero sería el 0. --> | ||
+ | var mObjItem = mContentUsuarios.getItem(1); | ||
+ | |||
+ | mObjItem.LOGIN = " | ||
+ | mObjItem.MAP_COLORVIEW = "# | ||
+ | |||
+ | <!-- Los parámetros son el name del prop del contents y el índice en el array de objetos del contents. --> | ||
+ | ui.refreshContentRow(' | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === 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.\\ | ||
+ | \\ | ||
+ | <code xml> | ||
+ | < | ||
+ | <action name=" | ||
+ | < | ||
+ | <!-- Cambiamos algunos valores del registro --> | ||
+ | self.MAP_COLORVIEW = "# | ||
+ | // | ||
+ | self.LOGIN = " | ||
+ | |||
+ | <!-- Le decimos que refresque únicamente la fila actual del contents --> | ||
+ | ui.refreshContentSelectedRow(' | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | 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. | ||
+ | </ | ||