使用Linq读取数据库记录,并通过外键在DataGrid上显示

时间:2019-06-03 05:30:59

标签: c# wpf entity-framework-6

我有两个班:FactorFactorItems。我也有三个Windows:Win1Win2WinReadWin1包含一个名为grd1的DataGrid; Win2包含一个名为grdItems的数据网格,而WinRead包含一个名为grdRead的数据网格。

Factor上有一个来自FactorItems的外键。 我使用了SaveChanges()方法并将数据从Win2 grdItems插入到两个表中。另外,我可以读取并显示Factor's中的grd1表记录,并且所有内容都是正确的。

现在,我想要在单击DataGridCellChanges行(例如,使用grd1)上的行(我使用Id == 50)时,它应该加载WinRead并显示所有{ {1}}的外键是FactorItems grdRead上的Factor_Id 50

因素

WinRead_Load

FactorItems

public class Factor
{
    public Factor()
    {
        this.BuyList = new List<FactorItems>();
    }

    public Int64 Id { get; set; }
    public virtual ICollection<FactorItems> BuyList { get; set; }
}

Win1

public class FactorItems
{
    public Int64 Id { get; set; }
    public string ProductName `enter code here`{ get; set; }
    public int NumberInBox { get; set; }
    public decimal TotalNumber { get; set; }

    public virtual Factor Factors{ get; set; }
}

WinRead

private void grd1_SelectedCellsChanged(objectsender,SelectedCellsChangedEventArgs e)
{
    WinRead wread = new WinRead
    if (grd1.SelectedItems.Count > 0)
    {
        wread.ShowDialog();
    }
}

1 个答案:

答案 0 :(得分:1)

Factor row = dataGridPrincipal.SelectedItem as Factor;

现在您将拥有选定的对象

WinRead wread = new WinRead
if (grd1.SelectedItems.Count > 0)
{
    wread.grid.itemsource= ctx.Factor.BuyList.where(x=>x.Id==row.forignkey).Tolist()
    wread.ShowDialog(); 
}

WinRead中创建道具并在其中保存外键,并且在加载事件中,您可以加载