1. Loop Through the Secondary Data Source
Scenario/Problem: | You need to loop through the secondary data source. |
|
Solution: | Create a while loop to loop through the rows. |
The loop is the main component of populating the
repeating table. You loop through the secondary data source through the
XPathNodeIterator collection (rows) that you defined in the previous
section, retrieving the values from each row. The code to perform this is shown in Listing 1. Place this after the secondary data source setup. You will add more code to the loop in the next section.
Tip
Check the XPath of the secondary data source fields to determine how to call reference their nodes.
Listing 1. Loop Through the Secondary Data Source
//Loop through the secondary data source while (rows.MoveNext()) { string office = rows.Current.SelectSingleNode("D:TITLE", NamespaceManager).Value.ToString(); string region = rows.Current.SelectSingleNode("D:REGION", NamespaceManager).Value.ToString(); string id = rows.Current.SelectSingleNode("D:ID", NamespaceManager).Value.ToString(); }
|
Note
The variables defined in the loop should correspond to the fields that are returned from the secondary data source.
2. Populate the Repeating Table
Scenario/Problem: | You need to populate the repeating table. |
|
Solution: | Use the XMLWriter to write the values from the secondary data source to the repeating group in the form. |
The repeating table is actually part of the main
data source, so you can access that and use the XMLWriter to write the
field values from the secondary data source to the table.
You will need the names of the groups and the fields
that are bound to the repeating table in the form. In this example, the
groups are group1 and groupRepeat, and the fields are field1, field2,
and field3.
Place the code in Listing 2 within the while loop from the preceding section.
Tip
Copy the XPath from the repeating group to ensure the correct path is entered.
Listing 2. Populate the Repeating Table
//Populate the repeating table using (XmlWriter writer = MainDataSource.CreateNavigator().SelectSingle- Node("/my:myFields/my:group1", NamespaceManager).AppendChild()) { writer.WriteStartElement("groupRepeat", myNamespace); writer.WriteElementString("field1",myNamespace,office); writer.WriteElementString("field2", myNamespace,region); writer.WriteElementString("field3", myNamespace,id); writer.WriteEndElement(); writer.Close(); }
|
Note
The order in which you write the values to
the table should be the order that they appear in the main data source.
Otherwise, you will receive a non-datatype schema validation error.