Zdravím, řeším malý problém. Mám ve WPF aplikaci DataGrid do kterého pomocí ItemsSource přiřadím ds.Tables("Klienti").DefaultView Tabulka se zobrazí. Dále mám stavený RowDetailsTemplate, kde mám další DataGrid do kterého přiřazuji seznam smluv pomocí relace:
Dim Relace1 As New DataRelation("Smlouvy", ds.Tables("Klienti").Columns("id"), ds.Tables("PS").Columns("idklient"))
Doteď vše OK. Po kliknutí na řádek v prvním DataGridu se mi zobrazí detail s druhým DataGridem a příslušnými smlouvami, ale problém nastavá v tom že v druhé tabulce (tedy PS) mám sloupec 'ps' ve kterém mám uložený integer s id číslem typu smlouvy. Nakonec mám třetí tabulku 'Ciselniky' kde mám uložený ID čísla a Názvy smluv. A já bych potřeboval udělat další relaci na propojení právě tabulky PS sloupec ps s tabulkou Ciselniky sloupcem id. Zkusil jsem toto:
Dim Relace2 As New DataRelation("tPS", ds.Tables("Ciselniky").Columns("id"), ds.Tables("PS").Columns("ps"))
ale dostanu chybu: These columns don't currently have unique values Ještě jsem zkusil prohodit v druhé relaci ty sloupky. Chybu to nehodí, ale pak nevím jak zobrazit příslušný název smlouvy v detailu. Druhý DataGrid mám takto:
<DataGrid x:Name="pGrid" ItemsSource="{Binding Smlouvy}" Background="White" GridLinesVisibility="Horizontal" HorizontalGridLinesBrush="#FFCBCBCB" AutoGenerateColumns="False" CanUserReorderColumns="False" CanUserAddRows="False" CanUserResizeRows="False" CanUserDeleteRows="False" IsReadOnly="True" Margin="5">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding id}" Header="ID" CanUserSort="False" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding datum, StringFormat=d, ConverterCulture='cs-CZ'}" Header="Datum" MinWidth="70" SortDirection="Descending">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn >
<DataGridTextColumn Binding="{Binding platnost, StringFormat=d, ConverterCulture='cs-CZ'}" Header="Platnost" MinWidth="70">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding cps}" Header="Číslo PS" MinWidth="100">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="5,0"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding ps}" Header="Typ PS" MinWidth="100">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="5,0"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding kmen, StringFormat=C, ConverterCulture='cs-CZ'}" Header="Kmen" MinWidth="90">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="right"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding provize, StringFormat=C, ConverterCulture='cs-CZ'}" Header="Provize" MinWidth="90">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="right"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding poznamka}" Header="Poznámka">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.HeaderStyle>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="5,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
Teď je otázka jak správně přiřadit název smlouvy do sloupce Typ PS. Předem moc děkuji za nakopnutí....
|