Microsoft Office InfoPath forms support multiple views. One view is the default view. When you open a form in Microsoft InfoPath 2010, Microsoft Office InfoPath 2007, or Microsoft Office InfoPath 2003, you open the form in the default view. This article contains an example of how to programmatically change the default view of an InfoPath form.
Note This example uses the C# programming language. You can use Visual Basic or other available options.
Before you run this sample script in InfoPath 2010, you must change the programming language to C#. To do this, follow these steps.
Warning The Remove Code command that is mentioned in the following steps removes all existing code from the current form. Therefore, do not use this option unless you are sure that you want to perform this action.
Before you run this sample script in InfoPath 2007, you must change the programming language to C#. To do this, follow these steps:
Warning The Remove Code command that is mentioned in the following steps removes all existing code from the current form. Therefore, do not use this option, unless you are sure that you want to perform this action.
Add the script to the Loading Event. To do this, follow these steps:
Add the script to the Loading Event. To do this, follow these steps:
For InfoPath 2007 and InfoPath 2003:
Create a New Form
- Start InfoPath.
- For InfoPath Designer 2010:
- Click New, click Blank Form, and then click Design Form.
- For InfoPath 2007:
- Click Design a Form Template on the File menu.
- Click Blank in the Design a Form Template task pane, and then click OK.
- For InfoPath 2003:
- Click Design a Form on the File menu.
- Click New Blank Form in the Design a Form task pane.
- For InfoPath Designer 2010:
Create View 1
For InfoPath 2010:- On the blank form, type This is View 1 for the title, and then type Check to display View 2 when the form is opened under the dotted line.
- Click to position your pointer at the start of the second line.
- In Controls, double-click Check Box.
- Click the Save icon.
- On the blank form, type This is View 1 on the first line, and then type Check to display View 2 when the form is opened on the second line.
- Click to position your pointer at the start of the second line.
- On the Task Pane drop-down menu, click Controls.
- In the Controls task pane, click Check Box.
- Click the Save icon.
Create View 2
For InfoPath 2010:- Click the Page Design tab. Notice that View 1 is the default view for the form.
- In the Views section, click New View.
- Type the name View 2, and then click OK.
- For the title, type This is View 2.
- On the Task Pane drop-down menu, click Views.
View 1 is the default view for the form. - In Actions section of the task pane, click Add a New View.
- Type the name View 2, and then click OK.
- On the blank form, type This is View 2.
Add the Script
InfoPath 2007
In InfoPath 2010 and 2007, you must set the programming language that you want to use. For InfoPath 2003, skip this procedure and then use the Add the script procedure.Note This example uses the C# programming language. You can use Visual Basic or other available options.
Set the programming language
For InfoPath 2010:Before you run this sample script in InfoPath 2010, you must change the programming language to C#. To do this, follow these steps.
Warning The Remove Code command that is mentioned in the following steps removes all existing code from the current form. Therefore, do not use this option unless you are sure that you want to perform this action.
- Click the Developer tab.
- In the Code section, click Language, and then click to select Programming. If the Form template code language box is disabled, click Remove Code to remove all existing code in the form. If the Form template code language box is available, go to the next step.
- In the Form template code language box, click to select C#, and then click OK.
Before you run this sample script in InfoPath 2007, you must change the programming language to C#. To do this, follow these steps:
Warning The Remove Code command that is mentioned in the following steps removes all existing code from the current form. Therefore, do not use this option, unless you are sure that you want to perform this action.
- On the Tools menu, click Form Options.
- In the Category list, click Programming. If the Form template code language box is disabled, click Remove Code to remove all existing code in the form. If the Form template code language box is available, go to the next step.
- In the Form template code language box, click C#, and then click OK.
Add the script
For InfoPath 2010:Add the script to the Loading Event. To do this, follow these steps:
- On the Developer tab, click Loading Event. Microsoft Visual Studio Tools for Applications starts.
- Add the following code example in the locations that are indicated.
{
//Create an XPathNavigator object for the main DOM
XPathNavigator xnDocument = this.MainDataSource.CreateNavigator();
//Create an XPathNavigator object for field1 - the check box for switching the View
XPathNavigator xnDefaultView = xnDocument.SelectSingleNode("/my:myFields/my:field1", this.NamespaceManager);
//Make sure that the XPathNavigator object is not null or an empty string
if ((xnDefaultView != null) && (xnDefaultView.Value != ""))
{
//Switch to the appropriate View
switch (xnDefaultView.Value)
{
case "false":
e.SetDefaultView("View 1");
break;
case "true":
e.SetDefaultView("View 2");
break;
}
}
} - Save the changes, and then close Visual Studio Tools for Applications.
- Save your form template as SwitchDefaultView.xsn, and then close the form template.
Add the script to the Loading Event. To do this, follow these steps:
- On the Tools menu, point to Programming, and then click Loading Event. Microsoft Visual Studio Tools for Applications starts.
- Add the following code example to the Age_OnValidate event.
{
//Create an XPathNavigator object for the main DOM
XPathNavigator xnDocument = this.MainDataSource.CreateNavigator();
//Create an XPathNavigator object for field1 - the check box for switching the View
XPathNavigator xnDefaultView = xnDocument.SelectSingleNode("/my:myFields/my:field1", this.NamespaceManager);
//Make sure that the XPathNavigator object is not null or an empty string
if ((xnDefaultView != null) && (xnDefaultView.Value != ""))
{
//Switch to the appropriate View
switch (xnDefaultView.Value)
{
case "false":
e.SetDefaultView("View 1");
break;
case "true":
e.SetDefaultView("View 2");
break;
} - Save the changes, and then close Visual Studio Tools for Applications.
- Save your form template as SwitchDefaultView.xsn, and then close the form template.
InfoPath 2003
To add the script in InfoPath 2003, follow these steps:- On the Tools menu, point to Script, and then click Microsoft Script Editor.
- Add the following code to the Code window:
function XDocument::OnLoad(eventObj)
{
//Pick the default view based on the value of element DefaultView
var objDefaultView = XDocument.DOM.selectSingleNode("//my:field1");
if ((objDefaultView != null) && (objDefaultView.text != ""))
{
switch (objDefaultView.text)
{
case "false":
XDocument.ViewInfos("View 1").IsDefault = true;
break;
case "true":
XDocument.ViewInfos("View 2").IsDefault = true;
break;
}
}
} - Save the script, and then close the Microsoft Script Editor.
- Save your form template as SwitchDefaultView.xsn, and then close the form template.
Test the Script
For InfoPath 2010- Open Microsoft Office InfoPath Filler.
- Click Find a Form, browse to SwitchDefaultView.xsn, select it, and then click Open.
The form opens in View 1 (the initial default view). - Click to select the View 2 check box.
- Save the form as SwitchDefaultViewForm.xml, and then close the form.
- On the File tab, click Close, and then click Open.
- Locate SwitchDefaultViewForm.xml, and then click Open.
For InfoPath 2007 and InfoPath 2003:
- On the File menu, click Fill Out a Form.
Note Make sure that you fill out the form in this step instead of previewing the form. Preview does not reflect any programmatic change of the default view in the OnLoad event. Preview mode always shows the view that is currently selected in the InfoPath Designer. - In InfoPath 2007, click SwitchDefaultView under Open a Form.
In InfoPath 2003, click SwitchDefaultView in the task pane.
The form opens in View 1 (the initial default view). - Click to select the View 2 check box.
- Save the form as SwitchDefaultViewForm.xml, and then close the form.
- On the File menu, click Open.
- Locate SwitchDefaultViewForm.xml, and then click Open.