This is a migrated thread and some comments may be shown as answers.

HierarchyChildTemplate not showing items

2 Answers 103 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Markus
Top achievements
Rank 1
Markus asked on 29 Sep 2010, 09:24 AM
Hello,

I am new at telerik-controls and trying to show some grid entrys with details (master-entry-shema).
My project includes an ObservableCollection. The items of the ObservableCollection are shown in the GridView. The ObservableCollection includes another ObservableCollection that should be shown in the HierarchyChildTemplate. But that don't works.

XAML:
<Window x:Class="Grobplanung.Window1"
    xmlns:telctrl="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
    xmlns:telnav="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Navigation"
    xmlns:telerikData="clr-namespace:Telerik.Windows.Data;assembly=Telerik.Windows.Data"
    Title="Window1" Height="768" Width="1024" Loaded="Window_Loaded">
 
    <DockPanel LastChildFill="False">
        <telnav:RadToolBar Height="30" Name="radToolBar1"
                           DockPanel.Dock="Top"/>
        <telnav:RadMenu Name="radMenu1"
                        DockPanel.Dock="Top">
            <telerik:RadMenuItem Name="mnuDatei" Header="Datei">
                <telerik:RadMenuItem Name="mnuBeenden" Header="Beenden">
                </telerik:RadMenuItem>
            </telerik:RadMenuItem>
            <telerik:RadMenuItem Name="mnuBearbeiten" Header="Bearbeiten"/>
            <telerik:RadMenuItem Name="mnuExtras" Header="Extras"/>
            <telerik:RadMenuItem Name="mnuHilfe" Header="Hilfe"/>
        </telnav:RadMenu>
 
 
        <telerik:RadGridView Name="mainGV"
                             DockPanel.Dock="Top"
                             AutoGenerateColumns="False">
 
            <telerik:RadGridView.ChildTableDefinitions>
                <telerik:GridViewTableDefinition>
 
                </telerik:GridViewTableDefinition>
            </telerik:RadGridView.ChildTableDefinitions>
 
 
            <telerik:RadGridView.Columns>
                <telerik:GridViewDataColumn DataMemberBinding="{Binding VorgangsNr}"
                                            Header="Auftrags-Nr." />
                <telerik:GridViewDataColumn DataMemberBinding="{Binding KundenNr}"
                                            Header="Kunden-Nr." />
                <telerik:GridViewDataColumn DataMemberBinding="{Binding Kundenname}"
                                            Header="Kundenname" />
                <telerik:GridViewDataColumn DataMemberBinding="{Binding ArtikelNr}"
                                            Header="Artikel-Nr."/>
            </telerik:RadGridView.Columns>
 
            <telerik:RadGridView.HierarchyChildTemplate>
                <DataTemplate>
                    <telerik:RadGridView ItemsSource="{Binding Details}" Name="childGrid" ShowGroupPanel="False">
                        <telerik:RadGridView.Columns>
                            <telerik:GridViewDataColumn DataMemberBinding="{Binding Artikelbezeichnung}" Header="Artikelbezeichnung"/>
                            <telerik:GridViewDataColumn DataMemberBinding="{Binding Auftragsart}" Header="Auftragsart"/>
                        </telerik:RadGridView.Columns>
                    </telerik:RadGridView>
                </DataTemplate>
            </telerik:RadGridView.HierarchyChildTemplate>
             
        </telerik:RadGridView>
    </DockPanel>
</Window>


class Auftragsdaten

class Auftragsdaten : INotifyPropertyChanged
 
{
    public Auftragsdaten()
    {
        Details = new ObservableCollection<Details>();
    }
 
    public ObservableCollection<Details> Details;
    public void AddDetails(string pArtikelbezeichnung, string pAuftragsart)
    {
        Details.Add(new Details() { Artikelbezeichnung = pArtikelbezeichnung, Auftragsart = pAuftragsart });
    }
...............


class Details

class Details
{
    public string Artikelbezeichnung;
    public string Auftragsart;
}


code behind the window

public partial class Window1 : Window
{
    private ObservableCollection<Auftragsdaten> _colDaten;
 
    public Window1()
    {
        InitializeComponent();
    }
 
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        _colDaten = new ObservableCollection<Auftragsdaten>();
 
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 1, ArtikelNr = "47110", KundenNr = "1000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 2, ArtikelNr = "47110", KundenNr = "1000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 3, ArtikelNr = "47113", KundenNr = "2000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 4, ArtikelNr = "47114", KundenNr = "2000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 5, ArtikelNr = "47115", KundenNr = "3000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 7, ArtikelNr = "47115", KundenNr = "3000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 8, ArtikelNr = "47115", KundenNr = "3000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 9, ArtikelNr = "47115", KundenNr = "4000", Kundenname = "Test" });
        _colDaten.Add(new Auftragsdaten() { VorgangsNr = 10, ArtikelNr = "47115", KundenNr = "4000", Kundenname = "Test" });
 
        _colDaten[0].AddDetails("Staubsauger 3744", "Barverkauf");
        _colDaten[0].AddDetails("Mixer 2231", "Barverkauf");
        _colDaten[0].AddDetails("Toaster 112", "Barverkauf");
 
        _colDaten[1].AddDetails("Staubsauger 3744", "Barverkauf");
        _colDaten[1].AddDetails("Mixer 2231", "Barverkauf");
        _colDaten[1].AddDetails("Toaster 112", "Barverkauf");
 
        this.mainGV.ItemsSource = _colDaten;
    }
}


Can you please help me?

2 Answers, 1 is accepted

Sort by
0
Accepted
Milan
Telerik team
answered on 29 Sep 2010, 10:11 AM
Hello Markus,

You just have to turn the Details field into a property and all will be fine:

public ObservableCollection<Details> Details
{
    get;
    private set;
}


Best wishes,
Milan
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Markus
Top achievements
Rank 1
answered on 29 Sep 2010, 10:44 AM
That's it. Thanks!
Tags
GridView
Asked by
Markus
Top achievements
Rank 1
Answers by
Milan
Telerik team
Markus
Top achievements
Rank 1
Share this question
or