Estoy buscando cargar un GridView con una lista genérica y hacer que las columnas se generen automáticamente. Recibo una excepción que no tiene las propiedades correctas para permitirle generar automáticamente las columnas.Gridview utilizando una lista genérica como columnas DataSource y Generación automática
Excepción
The data source for GridView with id 'GV1' did not have any properties or attributes from which to generate columns. Ensure that your data source has content.
GridView
<asp:GridView ID="GV1" runat="server" AutoGenerateColumns="true"></asp:GridView>
carga de la página
//LINQ query to populate list
List<student> su = new List<student>();
dbDataContext db = new dbDataContext();
var q = from c in db.data_table
where c.processed == false
orderby c.date_complete descending
select c;
//iterate through results and add to list
foreach(var c in q)
{
student s = new student { name = c.name, address = c.address };
su.Add(s);
}
//Load GridView
GV1.DataSource = su;
GV1.DataBind(); //Exception thrown here
Clase Estudiante
public class student
{
public string name;
public string address;
}
cualquier idea o sugerencia se aprecia, no dude en hacérmelo saber si voy sobre este completamente equivocado.
Este respondido a una pregunta similar que tuve. Lo que no entiendo es por qué funciona. ¿Por qué es que puedo acceder 'student.name' manualmente pero' GridView' no puede hacerlo a menos que agregue los accessors? – Brendan
No puedo decir específicamente, solo puedo decirte que la grilla solo tendrá acceso a las propiedades y no a los campos. Puedo * adivinar * que cuando hace el reflejo, se refleja en las propiedades públicas ('BindingFlags.GetProperty') y no en los campos públicos (' BindingFlags.GetField'). – CodingGorilla