Campos Ocultos en GridView, ¿Son necesarios?
(QR Code)¿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.












Muy bueno el apunte
19/12/2007 15:55
Como puedo obtener el index de la columna seleccionada, no de la fila!
12/01/2008 1:30
Lo mas sencillo, si usas VS2005 es que uses un control DataGridView. Este control tiene un evento CellClick que se lanza cuandose hace clic en cualquier celda del control y que tiene un parametro e que contiene
e.ColumnIndex
e.RowIndex
para saber el indice de la columna y la fila donde se esta haciendo clic del control.
Despues si queremos con este codigo en MiDataGridView podemos obtener el nombre de la columna de un DataTAble a la que esta vinculada esa celda
MiDataGridView .Columns(e.ColumnIndex) .CellTemplate.OwningColumn.DataPropertyName
12/01/2008 2:32