Hi,
First, you are using an Object Oriented Programming language. You need to make the task easier for you.
Otherwise, your code will be hard to maintain.
Start by creating a new class that represent the data to display in the gridview.
After you fill your objects based on your own logic.
You can either write your own gridview markup, or generate fields dynamicaly :
BoundField newColumnName= new BoundField();
newColumnName.DataField = "yourDataFieldName";
newColumnName.Headertext = "yourHeaderName";
yourGridView.Columns.Add(newColumnName);
I dont see any need for a dynamic binding thought.
Dont forget to add
autogeneratedcolumns=false
in your gridview markup