I've worked out how to do this albeit in a fairly simple manner. I wanted to create a multivalue parameter where I add many FeatureLayers and then choose an ID field for each layer. I've got it working but I was unable to work how to make the field a drop down list, so a user has to enter a field name manually. Here is the interface:
If anyone has managed to crack this problem or some guru from ESRI blesses us with their knowledge I would love to find out how to turn my second column (Site ID) into a drop down, listing specific fields. If you want to see an example of this have a look at the Create TIN tool.
Anyway to create this interface I create a script tool and added a parameter of type feature layer and set it to a multivalue as shown below.
I then clicked on the Validation tab at the top and then the Edit button. As this parameter is the 6th parameter in my script tool I updated the following code:
"""Refine the properties of a tool's parameters. This method is
called when the tool is opened."""
# Get the 6th parameter
param = self.params
param.datatype = "Value Table"
param.columns = [["Feature Layer","Activity Layer"],["Field","Site ID"]]
This resets the interface into the multi column table that I wanted. When you use GetParameterAsText it returns the following using my example:
pipeline pid;Dredging did
I've done some more research and have created the tool using a python toolbox. It works very well but does have a limitation if you go back and choose another ID. I have posted the code on GeoNet here.