我有一个实体数据模型,其中包含两个实体“角色”和“用户”.我有一个导航属性,我有一个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" />
解决方法
您不能将asp:BoundField用于相关导航属性的属性.您只能使用asp:TemplateField,然后将其作为只读与Eval(非绑定)绑定. BoundFields总是在内部使用Bind,这就是它无法工作的原因.我不得不在不久前解决这个问题:
Columns of two related database tables in one ASP.NET GridView with EntityDataSource