The datasource for a GridView needs to be a DataTable because a GridView is made up of Rows and Columns.
You are attempting to use a byte. The GridView has no idea what to do with this.
When you read an image from the database, do it to a Bitmap or Image class and then assign that Image to a Control that accepts an image.
Try looking at this article for some more information: Previewing Image in ASP.NET Image Control using C#