好的,假设我有一个这样的对象:
public class User {
public int ID { get; set; }
public String Name { get; set; }
public String Surname { get; set; }
public String Description { get; set; }
public Location Location { get; set; }
}
请注意,最后一个属性是Location类型对象。让我们看看 Location 对象:
public class Location {
public String ID { get; set; }
public String Address { get; set; }
public String PostCode { get; set; }
}
现在我想在 gridview 中显示一个用户列表,但我不想使用 datareader 或任何数据对象来提供它,而是想使用 List of Users Collection,所以我调用了一个方法,它给了我一个 List 集合和数据绑定 gridview像这样:
gvUsers.DataSource = getUsers(); // This returns a List<User> collection.
gvUsers.DataBind();
现在,我使用了一些 BoundFields 和 Templatefields 来显示数据,并且它可以正常工作,如下所示:
<asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="False" >
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Description" HeaderText="Description" />
<asp:TemplateField HeaderText="Surname">
<ItemTemplate>
<asp:Label ID="lbSurname" runat="server" Text='<%# Eval("Surname") %>'></asp:Label>
<asp:HiddenField ID="hdnUserId" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "ID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
如果我尝试访问 Location 对象属性,就会出现问题,在模板字段中想象一下:
<asp:HiddenField ID="hdnLocationName" runat="server" Value='<%# DataBinder.Eval(Container.DataItem, "Location.PostCode") %>' />
那是行不通的。
我不知道是否有办法使用模板字段来显示它。我还想知道是否有一种方法可以使用 BoundField。
如果仅使用 FrontEnd 无法完成,是否可以在 gridView 数据绑定的 Backend 中以某种方式完成?我应该使用 LINQ 并将其设置在 select 上吗?