vrijdag 24 oktober 2008

Om meer geavanceerde functies toe te voegen aan een InfoPath formulier kan gebruik gemaakt worden van visual studio. De codebehind voor InfoPath kan geschreven worden in C# en VB. Om dit mogelijk te maken moet er een onderdeel van Microsoft office worden geinstalleerd (zie plaatje, Configuratiescherm>software>programma's wijzigen of verwijderen>Microsoft Office).







Na de instalatie kan je op een control rechter muis knop drukken en vervolgens onder de knop Programmeren een functie van het onderdeel aanklikken. Hierdoor wordt als het goed is Visual studio geopend met wat gegenereerde code. Wordt de Microsoft Script Editor geopend dan kan je bij Extra>opties>Ontwerp of bij Extra>Formulieropties>Programmeren de programmeer taal waarin de codebhind wordt geschreven aanpassen (C#, VB, JScript of VBScript)



Als de 'Visual hulp-programma's voor toepassingen' zijn geinstalleerd en de gewenste programmeer taal is geslecteerd is er nog een instelling in InfoPath die geweizgd moet worden. Deze instelling is het beveiligings niveau van het InfoPath formulier. Deze instelling moet op Volledig vertouwen worden gezet. Als dit niet is ingesteld krijg je als je de codebehind uitvoerd een security exception. Je kan het beveiligings niveau aanpassen in Extra>Formulieropties>Beveiliging en vertrouwen.

Als je het InfoPath Formulier ook wil gebruiken moet er ook een handtekening worden toegevoegd aan het formulier. Dit gebeurd op de zelfde plek als het aanpassen van het beveiligings niveau.

Als je de stappen hierboven gevolgd heb kan je een InfoPath formulier aanmaken waarbij gebruik gemaakt kan worden van C# codebehind. Hieronder geef ik een aantal code voorbeelden voor het aanroepen en manipuleren van de controls op het InfoPath formulier.

Aanroepen van een control van het InfoPath formulier:

String controlXpath = "//my:Coltrol"; // 'Control' is de variabele naam van de control.
XPathNavigator control = MainDataSource.CreateNavigator().SelectSingleNode(controlXpath, NamespaceManager);

Opvragen en Aanpassen van waarde van een control

String value = control.Value;
control.SetValue("Een string") // In dit voorbeeld gaat het om een TextBox.

Het is ook handig om te weten dat als je een in een Validatie event van een Control zit er geen anpassing gedaan kunnen worden bij andere controls (control.CanEdit = false).

0 Comments:

Post a Comment