¿Es necesario tener un campo oculto en un GridView de nuestra web para obtener sus datos?.
En la mayoria de los casos la respuesta es NO. El tener los datos en el gridview como ocultos simplemente hace nuestra aplicación mas pesada, y la cantidad de datos que se necesita guardar en el VIEWSTATE mucho mayor.
Se pueden acceder a los datos que queramos que estén vinculados a un determinado gridView de una forma simple, Y ademas accediendo por el nombre de la columna que queremos y no por su indice (una limitación del GridView)
El código es muy simple: (siendo gw un Control GridView)
Obtenemos el DataTable del GridView
DataTable dtt =(DataTable) gw.DataSource;
Obtenemos de la fila (int) Row del GridView su correspondencia con la fila del DataTable contenido en el. Aquí podemos sustituir Row por cualquier valor, como el selectedIndex para la fila seleccionada en el GridView
int index = gw.Rows[row].DataItemIndex;
Finalmente devolvemos del DataTable Obtenido los datos de la fila (int) Row y el nombre de la columna que queremos ((string) Col)
object valorObtenido = dtt.Rows[index][col];
Y con esto ya tenemos en valorObtenido el valor de la fila y columna que necesitamos de la tabla que se usa para componer el GridView, este o no ese campo en el GridView.
Este código es especialmente &úacute;til para obtener datos de de la fila seleccionada en un GridView, pudiendo obtener incluso aquellos campos que no queremos mostrar en el control sin tener que añadírselos como campos ocultos.