私は2つのテーブルを持つデータセットを持っています。単純な1対多の親子関係が続いています。例えば;
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に表示する子レコードを取得できません。
このグリッドをデータリレーション名にバインドしていますこれは正しいですか?
ウィンドウ上の別のプロパティにバインドした場合;
public DataView ChildrenView
{
get
{
return this.ParentChildDataSet.Tables["Child"].DefaultView;
}
}
そうすれば、あなたが期待するように、親に関係なくすべてのレコードが表示されます。
誰もが私に与えることができるポインタをありがとう。