I need to create a repeat using two fields on the same form. In other words, the repeat has to appear at the bottom of the form like we used to do with embedded views. On this repeat I have two columns. They both have the same number of entries and they need to line up. The fields are OriginalFileName and NewFileName.
On first column (OriginalFileName), each row has to become a link and the second column is just the list from the second field (NewFileName). The URL can be either the attachment as it exists on the document itself or if it has been detached, it has to become the path to where it is stored on the network. The path is also stored as a variable on the document so once it is detached, it is filled in.
First, is it possible to create a repeat using values from the document that contains the repeat?
Second, how do I write the HTML that I need to add to make the URL in either case. The path for the detached file will always be the same for all rows in the repeat, it is just the file name that changes.
If you know how many entries there are in the multivalue item then you can set the repeat’s data source to be based on javascript and just return the number of times you want to repeat. If you don’t know the number of items in the multivalue field then you can set the repeat’s data source to be the document and field. In both cases you’ll need to set the max repeat value to higher if you suspect that you’ll have more then 30 entries so all can be displayed at the same time or you can add a pager pointing to the repeat component.
Accessing the data of the two fields is fairly easy, a multivalue field is just an array and you can pick out a single item of the array using a
document.getItemValue("fieldName")[arrayIndex]. To know what array index your on in the repeat there is a configuration field for ‘Repeat Index’ where you can type in a variable name, just use that variable name for arrayIndex.Now it is just a case of building your table or list in the repeat and adding in link and computed text controls that use the arrayIndex to get their values.