Search This Blog

Thursday, May 5, 2011

Differences between Main Vs.Secondary Data Sources in Infopath

This article explains the difference between the Main and secondary data sources and shows you how to programmatically retrieve a reference to the Main data source or to a secondary data source.

Introduction to data sources

InfoPath offers two types of data sources: Main and secondary. An InfoPath form template always contains one Main data source and can contain zero or more secondary data sources.

The difference between the Main and secondary data sources

The Main data source of a form contains the data that you want to permanently store when you save the form. A secondary data source on the other hand, is a temporary storage location for data that is external to the form. Such data typically lives outside the form in databases, XML files, SharePoint lists or libraries, or can be retrieved from web services.
When you save a form, the data in the secondary data sources of the form is never saved in the form. This is an important fact to remember when you design InfoPath form templates. Therefore, if you want data to be present in a form after you save, close, and re-open the form, you have to store this data in the Main data source of the form. How to create data sources

You automatically create a Main data source when you create an InfoPath form template. You can create a secondary data source by adding a Receive or Submit data connection to a form template. You can add a data connection to a form template by going to the Tools menu and selecting Data Connections.

How to view data sources

You can use the Data Source task pane to view Main and secondary data sources in a form template. If the Data Source task pane is not visible, click Data Source on the View menu to bring it up. The Data Source drop-down list box will contain the text Main for the Main data source and a data connection name followed by the text (Secondary) for a secondary data source (see Figure 1).



Figure 1. Data source task pane in InfoPath

Programmatically get a reference to the Main data source

If you are writing code and want to programmatically get a reference to the Main data source of your form template, you can use the following C# code
XPathNavigator mainDS = MainDataSource.CreateNavigator();
Or the following Visual Basic code:

Dim mainDS As XPathNavigator = MainDataSource.CreateNavigator() You can then use the XPathNavigator object to get or set values of fields (= nodes in the XML) on the form.
Programmatically get a reference to a secondary data source
If you are writing code and want to programmatically get a reference to a secondary data source that receives data in your form template, you can use the following C# code:

XPathNavigator secDS = DataSources["your_receive_data_connection_name"].CreateNavigator();

Or the following Visual Basic code:

Dim secDS As XPathNavigator = DataSources
You can then use the XPathNavigator object to get or set values of fields (= nodes in the XML) of the secondary data source

2 comments:

  1. How can you do this in JS??

    ReplyDelete
  2. I don't even know how I stopped up right here, however I believed this put up was once good. I do not realize who you're however certainly you
    are going to a well-known blogger if you happen to aren't already. Cheers!

    Here is my web blog - ketone diet

    ReplyDelete