2011-04-13 56 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