Vale, conseguido, más o menos.
Resulta que al GridView se le pueden meter columnas de la forma normal (con <Columns>...</Columns>), que además pueden coger los datos de las que me interesan con <%#Bind ("NombreColumna") %> y así puedo hacer con ellas lo que quiera. Estas nuevas columnas aparecen forzosamente a la izquierda de las que cargo en el DataBind(); y aquí viene la magia, tras hacer el databound utilizo este código:
Código:
protected void GV_DataBound(object sender, EventArgs e)
{
for (int h = 6; h < 14; h++)
{
GV.HeaderRow.Cells[h].Visible = false;
}
for (int i = 0; i < GV.Rows.Count; i++) {
for (int j = 6; j < 14; j++) {
GV.Rows[i].Cells[j].Visible = false;
}
}
}
Y así las columnas que cargo desaparecen de la vista del usuario pero puedo seguir trabajando con ellas.
Espero que le sirva a alguien.
Un saludo.