gpt4 book ai didi

wpf - 如何在wpf datagrid中显示数据集中的相关数据

转载 作者:行者123 更新时间:2023-12-05 08:02:05 33 4
gpt4 key购买 nike

我有一个包含两个表的数据集,一个简单的一对多父子关系。例如;

Parent Table
ParentId (int)
Name (string)

Child Table
ChildId (int)
ParentId (int)
Name (string)

在此数据集中,我在父 ID 字段上的父子关系之间建立了关系 (ParentChildRelation)。如果我以编程方式执行 Parent.getChildRows() 调用,我会看到正确的相关子记录,所以我知道关系很好。

我需要显示一个包含父行列表的数据网格,并让另一个单独的数据网格显示所选父行的子记录列表。

到目前为止,在我后面的代码窗口中有

private DataSet _parentChildDataSet;
public DataSet ParentChildDataSet
{
get
{
return _parentChildDataSet;
}
set
{
_parentChildDataSet = value;
}


public DataView ParentView
{
get
{
return this.ParentChildDataSet.Tables["Parent"].DefaultView;
}
}

public DataRelation ParentChildRelation
{
get
{
return this.ParentChildDataSet.Relations["Parent_Child"] ;
}
}

我还在 Windows 构造函数中将窗口的数据上下文设置为其自身;

this.DataContext = this;

在我的 xaml 中

<Grid>
<DataGrid ItemsSource="{Binding Path=ParentView}" AutoGenerateColumns="True" Name="dataGrid1">
</DataGrid>
<DataGrid ItemsSource="{Binding Path=ParentChildRelation}" Name="dataGrid2" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" />
</DataGrid.Columns>
</DataGrid>
</Grid>

但是我无法让任何子记录显示在 dataGrid2 中。

我将此网格绑定(bind)到数据关系名称是否正确?

如果我绑定(bind)到窗口上的另一个属性;

    public DataView ChildrenView
{
get
{
return this.ParentChildDataSet.Tables["Child"].DefaultView;
}
}

然后我会看到所有记录,而不管您期望的父级。

感谢任何人给我的任何指示。

最佳答案

当您返回 DataView 时,它正在工作但会显示所有内容。

在这里你返回一个DataRelation

ItemsSource="{Binding Path=ParentChildRelation}" 

你需要返回一个DataView

使用关系生成DataView

DataRowView.CreateChildView 方法(DataRelation)

关于wpf - 如何在wpf datagrid中显示数据集中的相关数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126602/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com