Two things:
First, never concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead. Particularly on a web based solution where anyone in the world has access...
Secondly, the error message is very explicit:
A field or property with the name 'Id' was not found on the selected data source
Since your SELECT statement doesn't return an ID field, you need to look at how you have set up the GridView to find out why it is trying to access a column with that name. Or add the ID to the SELECT...