【发布时间】:2019-01-28 10:56:50
【问题描述】:
我有一个列表,其中包含另外两个由 Id 链接的自定义对象列表。本质上,我有一个具有许多属性的“CPDActivity”对象和一个具有更多属性的“CPDActivityExtended”对象。然后我有一个“CPDActivityComplete”对象,其中包含其他对象中的每一个。这些完整的对象被添加到填充 DataTable 的列表中。
我需要能够将此 DataTable 绑定到 GridView 并显示 CPDActivityComplete 的两个子对象的属性值。例如,“A”列下的 CPDActivityComplete.CPDActivity.A。
到目前为止我所尝试的:
DataTables 是使用 Entity Framework 和 LINQ 填充的,我已将 GridView 绑定到生成的 DataTable:
DataTable dt = getCPDData.ToDataTable<CPDActivityComplete>(cpdActivityCompleteList);
cpd_gv_activities.DataSource = dt;
cpd_gv_activities.DataBind();
我有一个简单的 GridView 来测试:
<asp:GridView ID="cpd_gv_activities" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="15">
<Columns>
<asp:TemplateField HeaderText="Full Name">
<ItemStyle CssClass="fixedcell"></ItemStyle>
<ItemTemplate>
<asp:Label ID="vd_gv_lbl_FullName" runat="server" Text='<%# Bind("CPDActivity.A") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
但这会导致错误:
DataBinding: 'System.String' does not contain a property with the name 'A'.
如何将 label.text 绑定到 CPDActivityExtended.CPDActivity.A 属性?
【问题讨论】:
标签: c# asp.net gridview datatable