Bio
Mi avatar Blog de un pequeño informaticú y sus ocurrencias y pequeñas notas de ayuda.
AddThis Feed Button
AddThis Social Bookmark Button
Mi escritorio
Mis PCs de Curro actual
Mis PCs de Curro actual
3 de mis PCs de curro actual
Mi mesa de trabajo
Mi mesa de trabajo
IMGP2193
IMGP2192
IMGP2182
Monte Aramo en nubes
This Month Last Year
Categories
links
05
Sep

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.


3 Comentarios

  • Sebastian Dice:

    Muy bueno el apunte


  • Mario Dice:

    Como puedo obtener el index de la columna seleccionada, no de la fila!


  • Kuroneko Dice:

    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


Quieres dejar un comentario?