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



我有两个类:FactorFactorItems 。我还有三个窗口:Win1Win2WinReadWin1包含一个名为 grd1 的数据网格; Win2包含一个名为 grdItems 的数据网格,WinRead包含一个名为 grdRead 的数据网格。

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

现在我希望当我在grd1行上单击(我使用 DataGridCellChanges (时(例如,使用 Id == 50 (,它应该加载WinRead并显示所有FactorItems及其外键WinRead_Load grdRead 上Factor_Id 50

因素

public class Factor
{
    public Factor()
    {
        this.BuyList = new List<FactorItems>();
    }
    public Int64 Id { get; set; }
    public virtual ICollection<FactorItems> BuyList { get; set; }
}

因子项

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; }
}

赢1

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

温读

private void grdRead_Loaded(object sender, RoutedEventArgs e)
{
    using (var ctx = new EntContext())
    {
        //What do I write here?
    }
}
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中创建 prop 并将外键保存在那里,在加载事件中,您可以加载

最新更新