>>how do I make PopulateValues populate the records
You cannot. But you are free to loop through your datasource and put the data anywhere in the grid your want. This can be done very quickly if you use the GridData object directly, and do not rely on indexers on the GridControl object. The reason is that indexers fire events, and this slows things down. To put data directly into the GridData object, you can use the grid.SetCellInfo method.
for (int row = 1; row <= nRows; row++)
{
for (int col = 1; col < nCols; col++)
{
GridStyleInfo style = new GridStyleInfo();
style.CellValue = //the value from your datasource for row, coll
grid.SetCellInfo(row, col, style, StyleModifyType.Override, true, true);
}
}