Thanks aconley for the suggestion.  It didn’t work but it did make me look at the method list more closely (I tried Refresh(), RefreshState() and RefreshView() along the way) and there is an AddRow() method there that worked a treat.
Looks like the DataSource only does the initial population and any changes to the underlying LIST<> has no subsequent effect after initialisation – tried new-ing the list and adding to it with no effect on the grid rows.  Seems counter-intuitive but the LIST<> appears to be a once only bound.
illuminant = cdf.illuminant,

status = cdf.status,
HunterLab = cdf.HunterLab