# Refrescar rejilla

**URL:** <https://foros.velneo.com/t/refrescar-rejilla/9201>\
**Category:** Velneo\
**Created:** [23 Noviembre, 2016 10:22 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201 "2016-11-23T10:22:32Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 10:22 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/1 "2016-11-23T10:22:32Z")

</div>

Supongo que será posible, pero he buscado por ahí y no encuentro como hacerlo.  
Tengo un formulario, con un botón que genera x registros históricos. Dentro del formulario hay varios sub-formularios, uno de ellos con la rejilla del histórico. Si abro el formulario principal y me sitúo en el sub-formulario, cuando pulso el botón de generar, no me refresca la rejilla. He probado con Interfaz: Recalcular pero no funicona.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [23 Noviembre, 2016 13:25 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/2 "2016-11-23T13:25:35Z")

</div>

Hola SyP.

El comando Interfaz: Recalcular (REJILLA) vuelve a ejecutar el proceso que alimenta la ReEjilla.

Por lo tanto, revisa el proceso que acompaña a la Rejilla en la Vista de datos del subformulario y comprueba que devuelve los registros del histórico.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 15:38 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/3 "2016-11-23T15:38:32Z")

</div>

Gracias.  
Es un formulario de vERP, el proceso de cargar lista, lo hace vacio y en el on\_show, si no se ha cargado ya, realiza la carga. Si el botón lo pongo en el propio formulario, uso Interfaz: Ejecutar manejador de evento y lanzo la carga de la vista y funciona, pero como puedo hacer eso desde el formulario principal?

---

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [23 Noviembre, 2016 16:16 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/4 "2016-11-23T16:16:55Z")

</div>

Puedes poner el manejador que carga la vista en el formulario principal, de esta forma puedes llamar al manejador cuando lo necesites.  
1.- Cambia el manejador del sub-formulario al formulario principal  
2.- Asocias el Botón que carga la vista en el sub-formulario a un manejador vacío  
3.- En el formulario principal creas una conexión de evento asociado al botón del sub-formulario y al manejador que pasamos al formulario principal, para que cuando se pulse el botón capture el evento.

O bien si no quieres o no puedes cambiar el manejador:

Genera un manejador de evento en JavaStript en el formulario principal, con la siguientes instrucciones:

// Cargo la vista que contiene la rejilla  
var subForm = theRoot.relativeControl(“CONTROL.CONTROL”);  
// Selecciono el botón que tiene asociado el manejador que carga la vista  
var btn = subForm.control(“NOM\_BOTON”);  
// Genero click  
btn.click();

---

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [23 Noviembre, 2016 16:18 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/5 "2016-11-23T16:18:46Z")

</div>

Perdón, me olvide del dataview()

// Cargo la vista que contiene la rejilla  
var subForm = theRoot.dataview().relativeControl(“CONTROL.CONTROL”);  
// Selecciono el botón que tiene asociado el manejador que carga la vista  
var btn = subForm.control(“NOM\_BOTON”);  
// Genero click  
btn.click();

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [23 Noviembre, 2016 17:18 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/6 "2016-11-23T17:18:17Z")

</div>

Hola Esfero.

Puedes obtener directamente el botón desde el formulario principal:

```auto
var oControl = theRoot.dataview().relativeControl("SEPARADOR.SUBFORM_1.NOM_BOTON")
oControl.click()

```

Para generalizar más esta técnica y no depender de la existencia de un botón, yo uso siempre el Timer del subformulario:

```auto
var oSubForm = theRoot.dataview().relativeControl("SEPARADOR.SUBFORM_1")
oSubForm.root().setVar("QUE_HACER", "REFRESCAR_LISTA") // Aquí le indicamos al Timer qué es lo que tiene que hacer
oSubForm.startTimer(100)

```

En el manejador Timer del subformulario:

- ejecutar siempre como primera línea un theRoot.dataView().stopTimer()
- Leer la variable local QUE\_HACER y actuar en consecuencia

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 17:26 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/7 "2016-11-23T17:26:06Z")

</div>

Muchas gracias Esfero.  
Algo he hecho mal. En el formulario principal pongo un manejador de evento en JavaScript. Este manejador lo lanzo con interfaz ejecutar manejador.  
En el subformulario pongo un botón que refresca la rejilla. El botón pulsado a mano funciona.  
Cuando lanzo la generación no refresca y me aparece un error en la barra inferior (adjunto imagen).

Creo que el problema está en localizar el subformulario o el botón. He usado el asistente del indentificador de objeto y probado varias opciones pero nada.

// Cargo la vista que contiene la rejilla  
var subForm = theRoot.dataview().relativeControl(“SEP.PAL”);  
// Selecciono el botón que tiene asociado el manejador que carga la vista  
var btn = subForm.control(“BTN\_REF”);  
// Genero click  
btn.click();

No se si el nombre “SEP.PAL” o “PAL” o “velneo\_verp\_2\_app/VTA\_PED\_LIN\_G”, pero no funciona.  
El formularios es VTA\_PED\_LIN\_G, el separador de subformularios es SEP y el subformulario es PAL

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/velneo/original/2X/9/9ca444c30246bb1c886680f1129934c47ccc32ad.jpg)

---

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 18:21 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/8 "2016-11-23T18:21:31Z")

</div>

Gracias seh  
He probado tu primera opción y aparece un error similar. La segunda opción si que no se por dónde cogerla

---

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 19:05 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/9 "2016-11-23T19:05:53Z")

</div>

Al final he puesto la primera opción que comentaba Esfero. Quería probar a hacerlo con JavaScript, pero de momento lo dejo así, aunque de todas formas me gustaría saber que estoy haciendo mal.

Muchas gracias por vuestro tiempo.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [23 Noviembre, 2016 19:45 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/10 "2016-11-23T19:45:37Z")

</div>

Hola SyP.

Hay un error en la función dataview. Se debe escribir como dataView().

Estudia a fondo el API. Te permitirá solventar muchas carencias de Velneo nativo.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![friberam](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/friberam/32/5148_2.png) [@friberam](https://foros.velneo.com/u/friberam)\
**Post date:** [23 Noviembre, 2016 20:10 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/11 "2016-11-23T20:10:41Z")

</div>

Ok ahora si que funcionan las dos opciones, la tuya y la de Esfero.

Muchas gracias.

---

<div class="post-metadata">

**Author:** ![esteban](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/esteban/32/41_2.png) [@esteban](https://foros.velneo.com/u/esteban)\
**Post date:** [24 Noviembre, 2016 08:47 UTC](https://foros.velneo.com/t/refrescar-rejilla/9201/12 "2016-11-24T08:47:14Z")

</div>

Gracias Paco por la aclaración.
