XmlForm.DataSources property

Office 2013 and later

Gets the DataSourceCollection object associated with the form.

Namespace:  Microsoft.Office.InfoPath
Assembly:  Microsoft.Office.InfoPath (in Microsoft.Office.InfoPath.dll)

public abstract DataSourceCollection DataSources { get; }

Property value

Type: Microsoft.Office.InfoPath.DataSourceCollection
A DataSourceCollection that contains any DataSource objects associated with the form.

The DataSourceCollection object contains a collection of DataSource objects that represent all external (secondary) data sources associated with the form template. The DataSourceCollection object also contains a DataSource object that represents the main data source of the form. This means that developers will have two ways to return the DataSource object that represents the main data source: by using DataSources[""] or by using the MainDataSource property.

This member can be accessed only by forms running in the same domain as the currently open form, or by forms that have been granted cross-domain permissions.

This type or member can be accessed from code running in forms opened in Microsoft InfoPath Filler or in a Web browser.

In the following code example, the DataSources property of the XmlForm class is used to set a reference to the "CityList" secondary data source.

DataSource myDataSource = this.DataSources["CityList"];

In the following code example, which implements an event handler for a Button control on a form, the DataSources property of the XmlForm object is used to set a reference to the DataSourceCollection of the form. The code loops through the collection and displays the positional index and name of each DataSource object that it contains.

public void CTRL1_Clicked(object sender, ClickedEventArgs e)
{
   // Set a reference to the DataSources collection.
   DataSourceCollection myDataSources = this.DataSources;

   // Loop through the collection and display the name
   // of each DataSource object that it contains.
   for (int i = 0; i < myDataSources.Count; i++)
   {
      MessageBox.Show("Data source " + i + ": " + 
         myDataSources[i].Name);
   }
}
Show: