Gridview使用通用列表作为DataSource和自动生成列

jon*_*aze 17 c# linq data-binding gridview

我正在寻找一个带有通用列表的GridView,并自动生成列.我得到一个例外,它没有正确的属性来允许它自动生成列.

例外

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.
Run Code Online (Sandbox Code Playgroud)

网格视图

<asp:GridView ID="GV1" runat="server" AutoGenerateColumns="true"></asp:GridView>
Run Code Online (Sandbox Code Playgroud)

页面加载

    //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
Run Code Online (Sandbox Code Playgroud)

学生班

public class student
{
    public string name;
    public string address;
}
Run Code Online (Sandbox Code Playgroud)

任何想法或建议都表示赞赏,如果我对此完全错误,请随时告诉我.

Cod*_*lla 24

尝试调整您的student类并将字段更改为以下属性:

public class student
{
   public string name { get; set; }
   public string address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 我不能具体说,我只能告诉你网格只能访问属性而不能访问字段.我可以*猜测*当它进行反射时,它会反映到公共属性(`BindingFlags.GetProperty`)而不是公共字段(`BindingFlags.GetField`). (3认同)