One method for persisting data in a SharePoint environment is the use of Infopath forms. Infopath stores data in your form in XML format. I have a form which has a “comments” box where people add new comments as they progressively update the form and a “consolidate comments” box which shows all previous comments*. However, Infopath forms don’t natively support appending new data to existing data – and new comments added may blow away any previous comments.
It’s relatively trivial to enable this functionality. Assume you have your two comment boxes
comments_add – blank comment box for adding new comments
comments_display – shows all historical comments, and is bound to your “comments” field in your data connection
button_submit – submits the form to the server, will currently have rules, e.g., “submit using data connection”, “close form”
To add new comments to old comments, you need to add a rule to your button, before the data is submitted. The rule will “set a field’s value” and use the concat function to concatenate the two comments boxes together. In the value section, Insert Formula and have, e.g
In this case I set the value of my local “comments” field to the value of “ows_comments” (in my data connection) + the value of my new comments box. When you submit this, your comments box will contain both values. However, you will notice that the display is not very nice. You could concat a space in between the fields, but a newline between comments would be preferable. This is not quite as simple as it sounds, however, as Infopath controls don’t seem to accept the standard newline chars (e.g., rn). There is a way, however:
1. Create a new XML file and fill it with
<?xml version "1.0" >
2. Add it as a resource and data connection to your form
3. In your Concat function, reference it:
4. Ensure your textbox is multi-line enabled (Click Textbox > Control Tools > Control Properties)
And that should work. I had screenshots of the process, but it seems an overzealous host admin has gone crazy with mod_security2 and killing anything that tries to add an equals sign to a post.