Yo encontre el modo "oficial" de hacerlo, usando los datakeynames del gridview.
ej:
<asp:gridview blablabla datakeynames="id_producto">
Dejar la columna como invisible:
<asp:BoundField DataField="id_producto" ReadOnly="True" Visible="False" />
Y despues recuperas el valor desde el codigo asi:
VB
Dim idUsuario As String = Me.GridView1.SelectedDataKey("id_producto")
C#
string idUsuario = GridView1.SelectedDataKey("id_producto") //O como se escriba en C#, que no estoy seguro...
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)