Cabeceras de un datagrid

10/05/2004 - 12:19 por diego | Informe spam
Hola a todos,
Tengo un datagrid, del que no se cual es la select que lo ha creado, ya que
cada vez lo crea una distinta, pero quiero saber a que columna corresponde
cada campo. Alguien me podría dar una idea de como se puede hacer esto.
Muchas gracias
 

Leer las respuestas

#1 Tristan
10/05/2004 - 17:44 | Informe spam
No se si te entiendo muy bien...

En realidad, el DataSource no tiene por que ser un DataSet sino que puede
ser un número infinito de clases, pero las más habituales son DataSet,
DataTable y DataView.

Suponiendo que utilices DataSet como DataSource, ésta clase es en realidad
una colección de DataTable. Normalmente habrás seleccionado en el grid la
tabla concreta mediante la propiedad DataMember. Una vez determinado cual es
el DataTable, esta clase tiene una propiedad Columns, que es una colección
de columnas.

Suponiendo todas esas cosas, el código para mostrar las columnas sería así:

DataSet ds = dataGrid1.DataSource as DataSet;
DataTable tabla = ds.Tables[dataGrid1.DataMember];
foreach (DataColumn columna in tabla.Columns)
MessageBox.Show(columna.ColumnName);


Si quieres un código más genérico, puedes usar reflection para descurbir
cuales son las propiedades públicas del objeto, que es más o menos lo que
hace DataGrid realmente. También puedes acelerarlo examinando las interfaces
que cumple el objeto, por ejemplo ITypedList.


Otra solución es asociar al datagrid un tablestyle y observar las columnas
generadas.






Juan Carlos Badiola
MVP - C#
"diego" escribió en el mensaje
news:skJnc.273224$
He visto que dentro del dataSource, que es un dataSet, puedo conseguir el
esquema con GetXmlSchema, pero luego tendría que traducir el Xml...


supongo
que habrá una forma mas facil, no?
Gracias

"diego" escribió en el mensaje
news:TGInc.272702$
> Hola a todos,
> Tengo un datagrid, del que no se cual es la select que lo ha creado, ya
que
> cada vez lo crea una distinta, pero quiero saber a que columna


corresponde
> cada campo. Alguien me podría dar una idea de como se puede hacer esto.
> Muchas gracias
>
>


Preguntas similares