[英]How can I display foreign key data in a datagrid
I am using Entity Framework 6 with a code first approach. 我正在使用Entity Framework 6和代码优先方法。 The code below is simplified version of the entity classes I'm working with. 下面的代码是我正在使用的实体类的简化版本。
public class Complaint
{
public int ComplaintId { get; set; }
public int RemarkId { get; set; }
public string ComplaintName { get; set; }
public virtual Remark RemarkNavigation { get; set; }
}
public class Remark
{
public int RemarkId { get; set; }
public string RemarkText { get; set; }
public virtual ICollection<Complaint> ComplaintsReverseNavigation { get; set; }
}
Next I'll query the database with Linq. 接下来,我将使用Linq查询数据库。
var complaints = db.Complaints
.Where(x => x.ComplaintId == 1)
.DefaultIfEmpty()
.ToList();
Then I'll use the extension method ToBindingList()
in order to track any changes made. 然后我将使用扩展方法ToBindingList()
来跟踪所做的任何更改。 Like so... 像这样......
var complaintsBindingList = db.Complaints.Local.ToBindingList();
Finally I'll display the data in a data grid. 最后,我将在数据网格中显示数据。 Unfortunately any foreign key data will not be displayed correctly as seen in this picture. 遗憾的是,如图所示,任何外键数据都无法正确显示。
How then can I display the RemarkText
from the RemarkNavigation
in the data grid? 那么如何从数据网格中的RemarkNavigation
中显示RemarkText
?
I figured out how to display my data. 我想出了如何显示我的数据。 I turned AutoGenerateColumns
to false. 我将AutoGenerateColumns
为false。 Then I explicitly created the column like so. 然后我明确地创建了这样的列。
<DataGrid ItemsSource="{Binding DataSource}">
<DataGrid.Columns>
<DataGridTextColumn Header="TestColumn" Binding="{Binding RemarkNavigation.RemarkText}"/>
</DataGrid.Columns>
</DataGrid>
From the looks of it AutoGenerateColumns
won't generate values that are multiple levels down. 从它的外观来看, AutoGenerateColumns
不会生成多个级别的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.