2013-03-20 66 views
0

我的ASPX页面上有一个GridView控件。它工作正常,直到我尝试从我的对象列表中获取某个属性。在GridView中使用引用子对象

我插入这样一个对象的列表:

var test = new List<DataTest> 
{ 
    new DataTest 
     { 
      Name = "A name", 
      Bla = new Bla() 
     } 
} 

Bla看起来是这样的:

public class Bla 
{ 
    public string Blaat = "aaa"; 
} 

但似乎我不能得到财产Blaat在GridView控件,像这样:

<asp:BoundField DataField="Bla.Blaat" HeaderText="Name" /> 

我可以但是出Name没有问题:

<asp:BoundField DataField="Name" HeaderText="Name" /> 

这是否意味着我只能使用是直接DataTest对象定义的属性?所以没有提及任何sub对象,如Bla.Blaat

回答

1

你需要使用一个TemplateField:

<asp:TemplateField HeaderText="Name" SortExpression="Name"> 
     <ItemTemplate> 
      <asp:Label runat="server" ID="lblName" Text='<%# Server.HtmlEncode(Convert.ToString(Eval("Bla.Blaat"))) %>' /> 
     </ItemTemplate> 
</asp:TemplateField> 

你也可以在代码中设置隐藏的价值。