domingo, 24 de noviembre de 2013

Abrir Web Panel en una nueva pestaña

Trabajando con este bendito Genexus me encontré con la necesidad de abrir un WebPanel en otra pestaña del navegador desde una acción de la línea de un Grid. Adicionalmente necesitaba pasar unos parámetros que construía en un Sub. Así que con estas condiciones a googlear, y me encontré con algunas opciones en varios foros y blogs, las mismas que serán mostradas a continuación.

Cabe mencionar, no se si debería, que estoy trabajando con la versión Evolution 2. Esto lo menciono por si acaso no más.

Bueno principalmente encontré tres opciones:

La primera mediante la propiedad Link y el Evento Load del Grid, la segunda mediante código JavaScript y la propiedad Link y la tercera que no es más que abrirla en un popup especificando las propiedades para su apertura. Ahora si empecemos con las respectivas codificaciones de cada ejemplo:
  1. Como mencione se debe codificar en el evento Load del Grid. Donde se tiene una variable tipo imagen agregada en las columnas del grid, la misma que posee la propiedad "Link" que es a la que vamos a igualar a la propiedad "Link" del web panel a abrir en una nueva pestaña.

  2. Event Load
           &NuevaVentana.LinkTarget = "_blank"
           &NuevaVentana.Link = WebPanel.Link(&Parametro)
    EndEvent

  3. Está es la opción que utilice. Se crea un Texblock en el Web Panel y se especifica como Foramato "HTML" y mediante código JavaScript  se realiza la llamada pertinente al Web Panel con su propiedad "Link" en el Evento "Click" de la variable correspondiente pasando los parámetros y llamando a los Subs respectivos.

  4. Event &NuevaVentana.Click
           do 'LlamadaSub'
           TextBlock.Caption='<script>window.open("'+WebPanel.Link(&Parametro)+'","Pagina Nueva");</script>'
    EndEvent

    Se debe tomar en cuenta las comillas dobles y simples usadas en el JavaScript.

  5. Esta opción solo abre en una pantalla emergente conocida como Pop Up, pero con la peculiaridad de que se pueden especificar ciertos parámetros para su apertura. Esta operación se realiza mediante una variable tipo "Window"

  6. Event &NuevaVentana.Click
           &InWindow.Url = WebPanel.Link(&Parametro)
           &InWindow.Open()
    EndEvent
Descarga Export para Genexus EV2

6 comentarios:

  1. Mencionaste que pasabas parámetros a otra ventana. Yo necesito hacer algo similar. Tengo un webpanel con una grilla, hago click en una fila, debo coger los valores de esa fila y enviarlos a otra ventana.
    Quisiera saber cómo lo haces jugador.

    ResponderEliminar
  2. Hola, estoy trabajando con Genexus X Ev3 y Web Panel Designer, Necesito en una grilla condicionar para que algunos registros se muestren con hipervinculo y otros no. Actualmente en el LoadRowsVars de la grilla tengo lo siguiente:
    For Each
    If Campo = 1
    &Variable.Link =WebPanelPrueba.Link(parms)
    EndIf
    EndFor

    &Variable es la variable que se muestra en la grilla, el problema que tengo es que hasta tanto no encuentre el Campo con valor 1 la variable se muestra correctamente sin link, pero a partir de que se encuentra uno, todos los registros siguientes ya se muestran con hipervinculo. Necesitaria deshabilitar esto para los registros con campo <>1.

    si pueden ayudarme con este caso.
    Gracias.-

    ResponderEliminar
    Respuestas
    1. Hola,
      Podrías usar el caso else para codificar la otra opción que necesitas.

      Saludos,

      Eliminar
    2. Byron... desde ya muchas gracias por la respuesta, te comento que lo he resuelto de la siguiente manera:
      Do Case
      Case campo = 1
      &Variale.Link = WEbPanelPrueba.Link(parms)
      Otherwise
      &Variable.Link = ""
      EndCase

      lo que me estaba faltando es limpiar el vinculo cuando campo<>1

      saludos.-

      Eliminar
  3. Funciona perfecto la opción 2. Muchas gracias por compartir tus conocimientos.

    ResponderEliminar
  4. Excelente, la opción 2 es la que buscaba, gracias.

    ResponderEliminar