在所选数据源上找不到具有名称的字段或属性

时间:2011-04-15 18:05:31

标签: asp.net vb.net entity-framework entity-framework-4 linq-to-entities

我有一个实体数据模型,其中包含两个实体“角色”和“用户”。我有一个导航属性,我有一个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" />

1 个答案:

答案 0 :(得分:20)

您不能将asp:BoundField用于相关导航属性的属性。您只能使用asp:TemplateField,然后使用Eval Bind)将其绑定为只读。 BoundFields总是在内部使用Bind,这就是它无效的原因。我不得不在不久前解决这个问题:

Columns of two related database tables in one ASP.NET GridView with EntityDataSource