One of the amazing things about RadGridView is it's ability to be flexible against different data sources. You can absolutely define your columns depending on your data source. This link
will bring you to the documentation on how to do just that.
You are on the right path by binding the column definitions to a ViewModel first, and the populating the ViewModel with data from the database. Your scenario is a common one and you'll be moving your application forward technologically by doing this.
When you click on the link and go to the documentation, it shows the two main ways to set your columns. Either explicitly in your code (hard-coding it in) or via the ViewModel. The first example on the page explains how to do it automatically. Before you close the documentation, be sure to look in the left pane, there is a ton of help and documentation for RadGridView. This is a great resource for you.