Foros del Web » Programando para Internet » ASPX (.net) »

Enlazar estructura a datagrid

Estas en el tema de Enlazar estructura a datagrid en el foro de ASPX (.net) en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 03/04/2006, 14:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
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
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #2 (permalink)  
Antiguo 03/04/2006, 15:15
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
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
  #3 (permalink)  
Antiguo 03/04/2006, 15:23
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
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
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 03/04/2006, 16:02
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
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/04/2006 a las 16:30
  #5 (permalink)  
Antiguo 03/04/2006, 16:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Ok, gracias, vamos a probar!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 03/04/2006, 20:04
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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 . . .

Exentrit - Soluciones SharePoint & Net
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.