I'm relatively new to ASP.NET, so my answer is my not be the best you will get, but I did write a timesheet application.
I dynamically built a datatable that had a structure that matched how I wanted to present it on the grid (e.g. it had a "Day" column with "Monday", "Tuesday", etc.).
I retrieved my data with a DataReader, and looped through the rows, adding each to my "virtual" table, doing whatever translations needed to be done along the way (i.e. from the WorkDay field, which was a date, figure out the day of the week, e.g. Dec. 17, 2007 --> "Monday").
I then passed this DataTable to the grid.
Saving the data was basically a reverse of this process, i.e. "Monday" --> Dec. 17, 2007.