Visor HTML (reload)


([N2] overBCN) #1

Hola,
Tengo un visor HTML con “Contenido=texto html”. Al iniciar el formulario cargo en una variable código de Google Charts. La primera vez que hablo el formulario el contenido del control se adapta perfectamente al ancho y alto, pero cuando se cierra y vuelve a entrar, tengo que darle al botón derecho y presionar la única opción que me sale que es “Reload”. Al código se le pasa siempre “width: 100%; height: 100%”
Lo he estado mirando y no encuentra la forma de poder refrescar este control automáticamente.
Lo curioso es que solo se ve bien la primera vez que visualizas un gráfico.
Gracias



([N4] Infortic) #2

Hola.

El control visor HTML tiene un método void reload() por js.

Prueba a crear un manejador js:

theRoot.dataView().control("NOMBRE_CONTROL_VISOR").reload();

Y ponerlo en el onshow a ver si recargando la página se soluciona.


([N2] overBCN) #3

Gracias Infortic,
No hay forma, una cosa tan trivial y que haya manera de hacerlo funcionar.
He provado en el ONSHOW, ONINIT, después de generar el código,antes, al ganar foco, etc… solo funciona si pongo un botón y lanzo el evento que me has pasado.


([N4] Infortic) #4

Si pulsando el botón funciona, puedes intentar que se “autopulse” con el método click() de la clase Widget.

Algo así de cabeza:

theRoot.dataView().control("BTN_RELOAD").click();


([N3] pacosatu) #5

Hola Luis.

Lo extraño es que ejecutando el mismo formulario, con el mismo tamñao y con el mismo código HTML en el Visor, la primera vez se vea bien y el resto mal.

Yo, para el Visor HTML, utilizo la técnica de demorar la carga del Gráfico y ésto se consigue mediante un evento Timer.

En el ON_SHOW pon en marcha el evento Timer del formulario con la función js theRoot.dataview().startTimer(200).
En el manejador TIMER:

  • Paras el Timer con la función js theRoot.dataview().stopTimer()
  • Asigna el código HTML al Visor y a ver qué pasa.

Con esto consigues demorar la carga del HTML a un momento en que ya está mostrado el Formulario.

Saludos
Paco Satué


([N2] overBCN) #6

Solucionado, gracias a todos por vuestras aportaciones.
Al final he utilizado el método que propone Paco. Gracias