Ya no se que hacer pero no puedo ocultar las columnas de un datagrid en tiempo de ejecución

Lo tengo en tiempo de ejecución puesto que mi datagrid se carga de forma dinámica dependiendo de lo que se envia se hace una determinada consulta.
Mi código es el siguiente
string sql=" select prod.co_linea codlinea,prod.co_catego codcategoria," +
" prod.co_tipo codtipo,prec.co_producto codproducto, " +
" prod.tx_descom desproducto,unid.co_unidad codunidad, "+
" unid.tx_descomp desunidad,prec.vm_preclist prelista " +
" from tbr_vt_precios prec,tbm_in_catprd prod, tbm_ge_unidad unid " +
" where prec.co_producto=prod.co_catprd and " +
" unid.co_unidad=prod.co_univta and " +
" prec.bd_estado='V' and '" +
System.DateTime.Now.Day.ToString() + "-" +
System.DateTime.Now.Month.ToString()+ "-" +
System.DateTime.Now.Year.ToString() + "'<=prec.fe_finalizacion and '" +
System.DateTime.Now.Day.ToString() + "-" +
System.DateTime.Now.Month.ToString()+ "-" +
System.DateTime.Now.Year.ToString() + "' >=prec.fe_inicio ";
SqlDataAdapter daBusqueda= new SqlDataAdapter(sql,conn);
DataSet ds = new DataSet();
daBusqueda.Fill(ds, "tbm_in_catprd");
DataTable dt=new DataTable();
dt=ds.Tables["tbm_in_catprd"].Copy();
//Con esto le cambio las columnas a mi DataTable
dt.Columns[0].ColumnName="LINEA";
dt.Columns[1].ColumnName="CATEGORIA";
dt.Columns[2].ColumnName="TIPO";
dt.Columns[3].ColumnName="CODIGO";
dt.Columns[4].ColumnName="DESCRIPCION";
dt.Columns[5].ColumnName="CODUNIDAD";
dt.Columns[6].ColumnName="DESUNIDAD";
dt.Columns[7].ColumnName="PRECIO LISTA";
//Encontré este código para ocultar columnas pare no funciona
dt.Columns[2].ColumnMapping = MappingType.Hidden;
DataSet dsnuevo=new DataSet();
dsnuevo.Tables.Add(dt);
this.dtgProducto.DataSource=dsnuevo;
dtgProducto.DataBind();
Espero que alguien me pueda ayudar
Gracias de antemano