As you
know, submitting to a Microsoft Windows SharePoint form library from an
InfoPath form is quite simple: just add a “submit” type of data connection to
InfoPath and away you go. However, submitting to a SharePoint List is another
matter. In this post, we will take a look at the steps necessary to enable this
functionality.
1. Create
a new custom list named: MyContacts
2. From the Settings button choose List Settings
3. Click Create Column
4. Add the following columns/data types:
2. From the Settings button choose List Settings
3. Click Create Column
4. Add the following columns/data types:
- FirstName, Single line of text
- LastName, Single line of text
- Email, Single line of text
- Phone, Single line of text
The next
step is to create a Collaborative Application Markup Language (CAML) template
that contains the same XML nodes as the columns we added to our list – this
will be used as a secondary data connection in the InfoPath Form Template.
Step 2:
Create the CAML template
1. Launch
Notepad (or any text editor)
2. Copy and paste the following code to the Notepad document:
2. Copy and paste the following code to the Notepad document:
<?xml
version="1.0" encoding="UTF-8"?>
<Batch OnError="Continue">
<Method ID="1" Cmd="New">
<Field Name='Title'></Field>
<Field Name="FirstName"></Field>
<Field Name="LastName"></Field>
<Field Name="Email"></Field>
<Field Name="Phone"></Field>
</Method>
</Batch>
<Batch OnError="Continue">
<Method ID="1" Cmd="New">
<Field Name='Title'></Field>
<Field Name="FirstName"></Field>
<Field Name="LastName"></Field>
<Field Name="Email"></Field>
<Field Name="Phone"></Field>
</Method>
</Batch>
3. Save
this as: Add List Item Template.xml
Step 3:
Create the InfoPath Form Template
1. Create
a new, blank, browser-compatible form template
2. Add a “Receive” type secondary data connection to the Add List Item Template.xml file created in Step #2. (Make sure the options “Include the data as a resource file in the form template” and “Automatically retrieve data when the form is opened” are enabled.)
3. Add a “Receive” type secondary data connection to the “MyContacts” SharePoint List created in Step #1 and make sure the option “Automatically retrieve data when the form is opened” is enabled.
NOTE: Be sure to include the “Title” field along with the custom fields we created.
2. Add a “Receive” type secondary data connection to the Add List Item Template.xml file created in Step #2. (Make sure the options “Include the data as a resource file in the form template” and “Automatically retrieve data when the form is opened” are enabled.)
3. Add a “Receive” type secondary data connection to the “MyContacts” SharePoint List created in Step #1 and make sure the option “Automatically retrieve data when the form is opened” is enabled.
NOTE: Be sure to include the “Title” field along with the custom fields we created.
Each
SharePoint list is created with a unique identifier called a GUID. In order to
submit items to a SharePoint list, you must know the unique GUID for that list.
These next steps will enable you to identify the GUID for your “MyContacts”
list.
Step 4:
Identify the list GUID
1. Open a
browser and navigate to the MyContacts list
2. From the Settings menu choose List Settings
3. In the browser’s address bar you will see the URL appended with “List=”
2. From the Settings menu choose List Settings
3. In the browser’s address bar you will see the URL appended with “List=”
4. Copy
everything after the equals sign and paste this into a text editor as we will
need this value later on.
NOTE: We
will need the list GUID to be formatted as
“{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”. If your GUID appears as above with
the hyphens and braces “escaped” (i.e. %7B for the braces and %2D for the
hyphens) then you will need to replace the escaped characters with the braces
and hyphens so when we use this GUID later, it will appear as:
{1E76517B-2C36-4473-A420-A737D98589BC}
Step 5:
Add controls to the InfoPath Form Template
1. Open
the Data Source Task Pane
2. From the Data Source dropdown box choose the “MyContacts” connection
2. From the Data Source dropdown box choose the “MyContacts” connection
3.
Right-click on “MyContacts” and choose Repeating Table – this will add a repeating
table bound to that connection to your View
4. From the Data Source dropdown box choose Main
5. Add a text box to the “myFields” node named: ListName and set the Default Value property to the GUID value of your list – we will use this node to specify the list when we perform the Submit operation
4. From the Data Source dropdown box choose Main
5. Add a text box to the “myFields” node named: ListName and set the Default Value property to the GUID value of your list – we will use this node to specify the list when we perform the Submit operation
To update
the SharePoint list we will be using the “UpdateListItems” method of the
SharePoint “lists.asmx” web service. This web method requires a couple of
parameters (the list name and what gets updated) – now that we have added the
“ListName” node which contains the GUID and we have the Add List Item Template
XML data connection which describes our data structure we have all the
necessary information to add the “UpdateListItems” web method!
Step 6:
Add the “lists.asmx” web service
1. Add a
new “Submit” type of web service data connection to the “lists.asmx” web
service – this is typically located at: http://servername/_vti_bin/lists.asmx
2. Select the “UpdateListItems” operation
3. Double-click the “listname” parameter and assign the “my:ListName” node as the value
2. Select the “UpdateListItems” operation
3. Double-click the “listname” parameter and assign the “my:ListName” node as the value
4.
Double-click the “updates” parameter, select the “Add list Item Parameter” data
source, select “Batch” and click OK
5. For the “Include” option select “XML subtree, including selected element”
5. For the “Include” option select “XML subtree, including selected element”
6. Complete
the Data Connection Wizard
Now that
we have all the connections that are required, we now need to add the “submit”
functionality to the form template.
Step 7:
Add Submit functionality
2. From the Data Source dropdown box choose the Add List Item Template data connection
3. Drill down through the data source, right-click on the Field node and choose Repeating Table
We need
to change the text box control in the “Name” column to Read-only – if these
values were to be changed it would affect the CAML and the submit would fail.
• Double-click on the text box in the Name column of the Repeating Table
• Select the Display tab
• Enable the Read-only property and click OK
• Add a new Button control to the View
• Double-click the button to display the Properties
• Click the Submit Options button
• Enable the option “Allow users to submit this form”
• Enable the option “Perform custom action using Rules” and click the Rules button
• Click the Add button
• Click the Add Action button
• From the Action dropdown box choose “Submit using a data connection”, select the “Web Service Submit” data connection and click OK
• Click the Add Action button
• From the Action dropdown box choose “Query using a data connection”, select the “MyContacts” data connection and click OK (this will automatically refresh the list in InfoPath so you can see the newly added record)
• Double-click on the text box in the Name column of the Repeating Table
• Select the Display tab
• Enable the Read-only property and click OK
• Add a new Button control to the View
• Double-click the button to display the Properties
• Click the Submit Options button
• Enable the option “Allow users to submit this form”
• Enable the option “Perform custom action using Rules” and click the Rules button
• Click the Add button
• Click the Add Action button
• From the Action dropdown box choose “Submit using a data connection”, select the “Web Service Submit” data connection and click OK
• Click the Add Action button
• From the Action dropdown box choose “Query using a data connection”, select the “MyContacts” data connection and click OK (this will automatically refresh the list in InfoPath so you can see the newly added record)
• Click
OK until you are back to your form
NOTE: If
you want to automatically clear out the submitted values, add another action to
this Rule to “Set a field’s value” and the only option you need to specify is
the “Field” option – select the “Field” node from the “Add List Item Template”
data connection and then simply leave the Value option blank.
Step 8:
Test!
1. Click
the Preview button to preview the form
2. Fill in values for each of the fields: Title, First Name, Last Name, E-mail and Phone
2. Fill in values for each of the fields: Title, First Name, Last Name, E-mail and Phone
3. Click
the Submit button – the contact information should be submitted successfully
and the “MyContacts” list automatically updated!
No comments:
Post a Comment