Una de las primeras necesidades con la que nos encontramos diseñando formularios de InfoPath es la de poder cambiar de vista dinámicamente. Nos puede interesar que este cambio se realice al dispararse un evento, en función del valor de un campo determinado o dependiendo del usuario que está abriendo el formulario.

Cambiar de vista utilizando reglas

La forma más sencilla de realizar el cambio siempre es mediante reglas, ya que no necesitamos escribir código para ello. Para ver esto, vamos a tomar como ejemplo el típico formulario de registro en el que el usuario tiene que seleccionar una ubicación para mostrarle la hoja de registro correspondiente:

Vista: Ubicación

Cambiar de vista dinámicamente en InfoPath 2010

Vista: Registro_Madrid
Cambiar de vista dinámicamente en InfoPath 2010

Anteriormente, hemos creado un combo de selección con tres posibles valores:

Cambiar de vista dinámicamente en InfoPath 2010

Para crear la regla seleccionamos el botón “CONTINUAR” y buscamos en la Ribbon el botón “Administrar Reglas” dentro de la pestaña Propiedades. Inmediatamente veremos a la derecha un nuevo desplegable con las reglas creadas para este botón.

Creamos una nueva regla de tipo “Acción” y le damos un nombre, por ejemplo, “Mostrar Registro_Madrid”. También agregamos una condición para esta regla de la forma siguiente:

Cambiar de vista dinámicamente en InfoPath 2010

Por último, solamente falta seleccionar la acción que queremos que ejecute al cumplirse esta condición. Para ello agregamos una acción de tipo “Intercambiar vistas” y seleccionamos la vista correspondiente:

Cambiar de vista dinámicamente en InfoPath 2010

Solamente tenemos que repetir estos dos pasos para cada uno de los valores del combo.

Cambiar de vista mediante código

En determinadas ocasiones no tenemos más remedio que utilizar código para cambiar de vista, bien porque necesitamos realizar cálculos o comprobaciones que una regla no nos permite, o bien porque queremos cambiar de vista antes de que el formulario se muestre.

Sobre el ejemplo anterior, la vista por defecto es “Ubicación”. Sin embargo, una vez que el usuario se ha registrado y la persona encargada de tramitar el registro abre el formulario, el comportamiento deseado es que abra la vista “Tramitación”.

Vista: Tramitación
Cambiar de vista dinámicamente en InfoPath 2010

Para conseguir esto, en la pestaña “Programador” de la Ribbon, pulsamos sobre el botón “Evento Loading”. Si es la primera vez que lo hacemos se creará el proyecto de Visual Studio asociado al formulario, de lo contrario se abrirá el proyecto ya asociado. Recordad que para que tengamos disponible esta funcionalidad es necesario instalar “Visual Studio Tools for Applicactions”, que por defecto viene deshabilitado durante la instalación de Office 2010.

Cuando se abra el proyecto, lo único que tenemos que hacer es escribir el código siguiente en el evento “Loading”:

Public Sub FormEvents_Loading(ByVal sender As Object, ByVal e As LoadingEventArgs)
            If Me.[New] = False Then
                e.SetDefaultView("Tramitación")
            End If
End Sub

Con estas dos combinaciones es suficiente para poder cambiar de vista dinámicamente en todas las situaciones que nos encontremos.

Saludos!

 

0 Shares:
1 comment
  1. Necesito saber para que sirve crear formularios en visual studio de infopath y como los puedo utilizar

    Necesito saber como llamarlos en tiempo de ejecucuion

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

Cazando vampiros de memoria en SQL Server

Visto que el mayor consumo de memoria ocurría en el proceso de SQL Server una de las primeras cosas que solemos revisar es si se encuentra la memoria de la instancia limitada. En este caso se encontraba sin limitar, lo cual puede ser problemático en muchos escenarios.