Programando codigo administrado para formualrios InfoPath


De por si InfoPath cuenta con muchas características que prácticamente no requiere de una sola línea de código para realizar cualquier tipo de funcionalidad común. La fundación de capa lógica de negocio normalmente es nuestro esquema y puede provenir de nuestros Servicios Web XML o desde el esquema de nuestras bases de datos previendo la estructura y algunas reglas de validación que nuestro formularios detecta y refuerza las reglas de negocio expresadas, adicional a esto Infopath permite asociar reglas, caculos, validación de datos y formateo condicional de campos así que prácticamente la necesidad de escribir código es nula.


Pero dicho esto, aquí dejo unas razones para escribir código administrado en formularios InfoPath:



  • Conexiones de datos: Cuando requerimos conectador directamente a algún origen de datos sin tener que utilizar servicios Web.
  • Automatización: Cuando requerimos persistir datos en el cliente para poder soportar totalmente escenarios desconectados. 
  • Task Panes: Cuando queremos apoyarnos con información contextual dentro de nuestro task pane mientras que trabajamos con el formulario. 
  • Encriptación: Cuando trabajamos con datos sensitivos que necesitamos manejarlos con seguridad. 
  • Rastreo y Logeo: Cuando requerimos establecer instrumentación en nuestros formularios. 
  • Validaciones y cálculos avanzados: Cuando necesitamos realizar complejos cálculos financieros o estadísticos

En ocasiones me he encontrado en situaciones así, donde requiero asociar y escribir código administrado para mis formularios InfoPath, afortunadamente con Enterprise Library podemos aprovechar mucha funcionalidad y agregar servicios adicionales para nuestros formularios de Infopath.


Pero en este post quiero platicarte como puedes escribir código administrado que se ejecute sobre el .NET Framework 2.0 para realizar operaciones adicionales en algunos controles de un formulario InfoPath. Primero asumo que cuentas con Visual Studio 2005 y que además tienes instalado Visual Studio Tools for Office System ahora hay que descargar el InfoPath Toolkit for Visual Studio 2005.


Creamos un proyecto de tipo InfoPath y seleccionamos finalizar en el asistente. Visual Studio 2005 y el la plantilla de InfoPath se encargan de crear un formulario en una instancia nueva de InfoPath en tiempo de diseño.




  1. Arrastramos un control TextBox sobre el formulario.


  2. Damos doble clic sobre el control y manipulamos algunas de sus propiedades: 



    • Field Name: customerID


    • Damos clic en el botón Data Validation 


    • Se carga un dialogo llamado Data Validation en donde seleccionaremos un evento OnBeforeChange para este control y damos clic en el botón Edit.



  3. En este momento se carga Visual Studio 2005 y se genera un manejador de evento para este control específico.

Lo que hace es utilizar un atributo para asociar a nuestro elemento “/my:myFields/my:customerID” que se encuentra dentro del esquema de InfoPath a un evento “InfoPathEventType.OnBeforeChange” que será ejecutado en nuestro código administrado. Lo que aremos a continuación es mostrar el valor capturado por el usuario:


[InfoPathEventHandler(MatchPath=”/my:myFields/my:customerID”, EventType=InfoPathEventType.OnBeforeChange)]
public void customerID_OnBeforeChange(DataDOMEvent e)
{ e.XDocument.UI.Alert(e.Source.text); }



De esta manera podemos leer información capturada en un formulario InfoPath en código administrado .NET.

Leave a Reply

Your email address will not be published. Required fields are marked *