我有一个实体数据模型,其中包含两个实体“角色”和“用户”。我有一个导航属性,我有一个EntityDataSource和一个GridView。 EntityDataSource指向Users实体,并具有Include =“Roles”参数。
我在GridView中添加了一个BoundField,它指向RoleName,它是实体Roles的一个属性。但是,当我执行代码时,我得到了上述错误。
我在另一个应用程序中成功使用了非常相似的代码。任何想法为什么这不起作用?
这是我的EntityDataSource:
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=pbu_checklistEntities"
DefaultContainerName="pbu_checklistEntities" EnableDelete="True"
EnableFlattening="False" EnableUpdate="True" EntitySetName="Users" Include="Role">
</asp:EntityDataSource>
这是BoundField:
<asp:BoundField DataField="RoleName" HeaderText="Role" SortExpression="RoleName" />
答案 0 :(得分:20)
您不能将asp:BoundField
用于相关导航属性的属性。您只能使用asp:TemplateField
,然后使用Eval
(不 Bind
)将其绑定为只读。 BoundFields总是在内部使用Bind
,这就是它无效的原因。我不得不在不久前解决这个问题:
Columns of two related database tables in one ASP.NET GridView with EntityDataSource