简体   繁体   English

如何在数据网格中显示外键数据

[英]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. 遗憾的是,如图所示,任何外键数据都无法正确显示。

Datagrid示例

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM