Retroceder   Foros del Web > Programación para sitios web > .NET > web forms

Respuesta
 
Herramientas Desplegado
Antiguo 03-abr-2006, 14:29   #1 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.474
Enlazar estructura a datagrid

Hola chic@s, aqui moléstandolos con una pregunta, soy novato en esto del .NET y la verdad es que me está rompiendo un poco la cabeza, necesito saber cuál es la manera de hacer un Binding a un datagrid a partir de una estructura?

Código:
public struct applicantDetails
{
	public applicantDetails(string question, string answer)
	{
		Question = question;
		Answer = answer;
	}
	public string Question;
	public string Answer;
}
La llamo mas o menos asi:

Código:
//Si encuentro este registro...
if ( item.Get() )
{
	listDataGridApp.Visible = true;
	applicantDetails[] appData = new applicantDetails[26];
	appData[0] = new applicantDetails("Date Applied", item.jobdate.ToString());
.
.
.

listDataGridApp.Visible = true;
listDataGridApp.DataSource = appData;
listDataGridApp.DataBind();

}
Ok, resulta que si hace el binding, pero no veo mis valores

Me muestra en lugar de mis datos, esto:

VisionCMT.Admin.ManageJobApplicant+applicantDetail s

Mi HTML es el siguiente:
Código:
<asp:DataGrid id="listDataGridApp" CssClass="listtable" Runat="server" UseAccessibleHeader="false" AllowPaging="false" utoGenerateColumns="false">
<Columns>
	<asp:TemplateColumn>
		<ItemTemplate><%# Container.DataItem %></ItemTemplate></asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Cualquie ayuda será enormemente recompensada.

Saludos
__________________
¿Qué darías por vivir un sueño?
u_goldman está desconectado   Responder Citando
Antiguo 03-abr-2006, 15:15   #2 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
Cita:
Iniciado por u_goldman
Ok, resulta que si hace el binding, pero no veo mis valores

Me muestra en lugar de mis datos, esto:

VisionCMT.Admin.ManageJobApplicant+applicantDetail s
Te muestra eso, porque es lo que devuelve por defecto el método ToString de tu estructura (se llama a éste porque sólo usas Container.DataItem), una forma rápida de cambiar ese comportamiento es sobre-escribiendo el método antes mencionado:
Código:
public override string ToString()
{
     return Question + " -> " + Answer; // o lo que desees mostrar
}
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
xknown está desconectado   Responder Citando
Antiguo 03-abr-2006, 15:23   #3 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.474
Cita:
se llama a éste porque sólo usas Container.DataItem
Hola xKnown, gracias por la respuesta...si no quiero sobrecargar este método, cuál sería la forma correcta de trabajar este datagrid?

Saludos
__________________
¿Qué darías por vivir un sueño?
u_goldman está desconectado   Responder Citando
Antiguo 03-abr-2006, 16:02   #4 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
No sé si sea la forma correcta o no, pero podrías usar:

DataBinder.Eval(Container.DataItem, "UnaPropiedad") // Debe ser una propiedad
( (NombreEspacio.applicantDetails) Container.DataItem ) . Answer

Update: En las 2 formas descritas existe, si no me equivoco, un *pequeño* impacto en el rendimiento, ya que al ser applicantDetails una estructura (value type), se hace boxing y unboxing de los valores del arreglo appData, en este caso, creo que sería mejor usar una clase en lugar de una estructura.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño

Última edición por xknown; 03-abr-2006 a las 16:30.
xknown está desconectado   Responder Citando
Antiguo 03-abr-2006, 16:30   #5 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.474
Ok, gracias, vamos a probar!
__________________
¿Qué darías por vivir un sueño?
u_goldman está desconectado   Responder Citando
Antiguo 03-abr-2006, 20:04   #6 (permalink)
Moderador
RootK llegará a ser famoso muy prontoRootK llegará a ser famoso muy pronto
 
Avatar de RootK
 
Fecha de Ingreso: noviembre-2002
Ubicación: México D.F
Mensajes: 7.552
Enviar un mensaje por MSN a RootK
Cita:
Iniciado por xknown
en este caso, creo que sería mejor usar una clase en lugar de una estructura.
De hecho si, cuando personalizas el content para un cualquier objeto que recibe alguna collection, que en este caso es un Array lo mejor es guardar la info sobre tu clase y posteriormente usar un ArrayList que guarde esas referencias para que las reciba tu objeto (en este caso datagrid)

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .
RootK está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:23.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93