Hi John,
According to the developer, this is the design behavior. Setting the data source to null effectively clears the grid, including column captions etc.
The preserveLayout parameter is used when binding to data sources (not to null) and it causes the grid to preserve the existing column information in that case.
Regards,
Rijo