I don't see the point of your extension method as there is already a ToList extension method and that will create a list of your anymous type, what your method will do is create a list, with a single item in it that is an IQueryable of your anonymous type. Secondly the error is saying that GridMaintenanceData has a property called KeyFieldName and you have specified a fieldname in there that does not exist within the datasource you are binding to it, probably because of your silly MakeList method.
Do this instead:
var Qry = from tableRaletions in taskMaints.TaskRelations
where tableRaletions.TaskId == Convert.ToInt32(txtID.Text) && tableRaletions.RelTypeId == 12
select new
{
tableRaletions.RefMaintenance.code,
tableRaletions.RefMaintenance.shortdesc
};
GridMaintenanceData.DataSource = Qry.ToList();
GridMaintenanceData.DataBind();