var result = from p in dc.People
join d in dc.Departments
on p.fk_dep_id equals d.pk_dep_id
select p;
return result.ToList();
上面的linq查询将选择所有人员,以及他们被分配到的部门的全名。此结果包含对象“Department”中的Department数据,我可以在调试时看到它。
但是,将此结果添加到gridview时,联接的数据会触发错误:
"A field or property with the name "Department.name" was not found on the selected data source.
我尝试在Gridview中执行以下操作:
<asp:BoudField DataField="Department.Name" HeaderText="Department" SortExpression="Department.Name" />
有关如何使用linq2sql数据在Gridview中显示此类“已加入”列的任何想法?
答案 0 :(得分:0)
DataField
应该是数据源中对象的属性名称。你不能使用那样的复杂表达式。为此,您需要TemplateField
:
<asp:TemplateField>
<ItemTemplate>
<asp:Label runat="server"
Text="<%# (Eval("Department") as Department).Name %>" />
</ItemTemplate>
</asp:TemplateField>