2011-04-13 80 views
1

考虑:将列表数据绑定到GridView。 GridView无法找到我的财产!

我有一个类:

class MyObject 
{ 
    public string Field1; 
    public string Field2; 
} 

和下面的代码:

var list = SomeFunction(); // returns a valid List<MyObject> 
gvMyList.DataSource = list; 
gvMyList.DataBind(); // THIS THROWS AN EXCEPTION 

而且在一个aspx页面GridView控件:

<asp:GridView ID="gvMyList" AutoGenerateColumns="false" runat="server"> 
    <Columns> 
    <asp:TemplateField HeaderText="Field 1"> 
     <ItemTemplate> 
     <asp:Label ID="lblCourse" runat="server" Text='<%# Eval("Field1") + " " + Eval("Field2") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

问题:

所以我知道如果有东西实现IEnumerable那么它可以传递给DataSource属性。据我所知,如果您通过DataSource列表,那么我应该可以通过使用Eval("Field1")Eval("Field2")访问MyObject的属性。这不是这里的情况。相反,我得到抛出的异常:

DataBinding: 'MyObject' does not contain a property with the name 'Field1'.

回答

7

你的类包含,不属性;你必须这样定义属性:

class MyObject 
    { 
     public string Field1 { get; set; } 
     public string Field2 { get; set; } 
    } 
+0

太棒了!_____ :) – DJTripleThreat 2011-04-13 20:10:06