Haven't looked at the file yet but of course $semesterSummary is NOT a global variable.
Apologies! Edited the question and gave the credentials.
So you have 61 records (why?) but you have not populated the RowNum field.
The point of a virtual list is that field N ( or rowNum in your case) must be populated with numbers from 1 to the count of records in the virtual table when you set up the virtual table.
And if for some reason you modify the record count of the virtual table; you need to be sure you update it again.
And your global variable is name $$semSummary; but at least it is a global variable, and it is correctly referenced by the rowData field.
Also I note that in another table you had a field named $$indiStudentId.
I don't think you want to do that. That is, start a field name with $$.
I am totally new to filemaker and appreciate your advice.
For this layout, I am sure that the number of records will not be greater than 60. I will update the rowNum to contain values.
My doubt was when I open the layout, the data viewer shows there must be 3 records but I see only two records displayed. I am wondering where the N (rowNum) of two is missing. So if the rowNum of 2 has been edited, how do I edit the value again? I was not sure why the first row was gray in colour
PS: If I am not sure of the total number of records, is there any way to randomly create records in the virtual list table?
Is there an option delete the contents and all rows in the table and automatically create N number of rows in the table, starting with 1 and increment it by 1?
There is no need to delete anything.
The virtual list is populated by whatever your scripts have collected into global variables $$semSummary and $$Summary.
As far as automatically populating your rowNum field; you can define the field to be an auto-enter calc, get( recordNumber).
As for re-populating the rowNum field, reply 5 - the one you marked correct - does that.
[Edit: Whoops, meant to reply to the OP.] You probably will only need to replace the numbers once (at the beginning). Have a table with more records than you would reasonably use and then just do a find on the first n records, where n is the number of rows in your data, by finding on recNum <= n. You will probably never have to create any new records and it also saves you the time to delete extras, if you were using that approach to keep from displaying empty records.