if all this is not working then use the most Cost consuming method:
1) create a datatable and add columns as in gridview
DataTable dt = new DataTable();
dt.Columns.Add("col1");.....
2) apply for loop on gridview rows and add repective datarow in datatable
for(int i=0;i<gridview.rowc.count;i++)>
{
DataRow dr =dt.NewRow();
dr["col1"]= gridview.rows[i]["col1"].text;
dt.rows.add(dr);
}