Thanks. I ended up with the following code in OnParametersSet() which implies that this should really be a feature of the Grid component checking against the datasource.
// Handling issue where the "No records to display" text is visible whilst rendering the data into the grid.
if (FilteredRecentPinnedList.Count > 0)
this.RecordsText = TString.value("Loading records");
else
this.RecordsText = TString.value("No records to display");