Hi,
Is it possible to show a hierarchical data(another grid) on clicking of a row in a igDP:XamDataGrid?
regards
Vivek
Hello Vivek,
Thank you for your post. I have been looking through it and I attached a sample project containing a xamDataGrid with hierarchical data. By selecting a row, the child elements are expanded. Please let me know if this covers your expectations.
I am looking forward to see hearing from you.
Hi Stefan Stoyanov
Great example. That was really helpful to me!
I do have one question though. Is it possible to remove the headers from the "book-items". I have some "recursive" data that I want to display with the same headers for all rows.
Is this possible and if so, how?
Hello CTCWESTSOFT,
I am glad I helped you. I attached a new sample project, which is similar to my previous one, but this time the headers of the child FieldLayout are hidden, which is what I suppose you wanted. Please let me know if this is what you are trying to achieve or I have misunderstood you.
Looking forward for your reply.
Thanks for the quick response. Unfortunately it didn't help...
As mentioned ealier I'm trying to display some "recursive" data in the grid. I have included my XAML and a screenshot
<igDP:XamDataGrid x:Name="MyGrid" DataSource="{Binding Calculations}"> <igDP:XamDataGrid.FieldSettings> <igDP:FieldSettings CellClickAction="SelectRecord" AllowEdit="True" /> </igDP:XamDataGrid.FieldSettings> <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:Field Name="ShortName"></igDP:Field> <igDP:Field Name="Name"></igDP:Field> <igDP:Field Name="Min"></igDP:Field> <igDP:Field Name="Prob"></igDP:Field> <igDP:Field Name="Mean"></igDP:Field> </igDP:FieldLayout> <igDP:FieldLayout> <igDP:Field Name="ShortName"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Name"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Min"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Prob"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Max"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> <igDP:Field Name="Mean"> <igDP:Field.Settings> <igDP:FieldSettings LabelPresenterStyle="{StaticResource MyStyle}"></igDP:FieldSettings> </igDP:Field.Settings> </igDP:Field> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> </igDP:XamDataGrid>
Hello again,
I have been looking through your code snippet and since you have the same data objects for all levels of data the XamDataGrid maps the first suitable FieldLayout in its FieldLayout collection. As a result the other layouts are not used at all, along with their settings. I can suggest you handle your AssignFieldLayoutToItem event in order to manually specify how your FieldLayouts are used. You can assign keys to your layouts and use a code snippet like this one:
FieldLayout resultLayout = new FieldLayout(); if (e.ParentExpandableFieldRecord == null) resultLayout = xamDataGrid1.FieldLayouts["master"]; else resultLayout = xamDataGrid1.FieldLayouts["nested"]; e.FieldLayout = resultLayout;
where the parent records get the "master" and child records the "nested" FieldLayout. Please let me know if you require any further assistance on the matter.
Hello George,
The approach I suggested you works if there are different FieldLayouts for the parent and child records, so I created a sample project for you, which works with self-reference data.
Hope this helps you.
Hi Stefan,
are you sure, this style applies always to the first level? In my case I have only one FieldLayout and it IsDefault.
So by me it applies to all the levels.
Is there any other Property, that one could use for triggering?
Greets,
George
I can suggest you use the following Styles for the LabelPresenter and DataRecordPresenter:
<Style TargetType="{x:Type igDP:LabelPresenter}"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=Field.Owner.IsDefault}" Value="False"> <!--Add the Setters for the LabelPresenter--> </DataTrigger> </Style.Triggers> </Style> <Style TargetType="{x:Type igDP:DataRecordPresenter}"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self},Path=FieldLayout.IsDefault}" Value="False"> <!--Add the Setters for the DataRecordPresenter--> </DataTrigger> </Style.Triggers> </Style>
Which has Triggers in order to determine if the Labels and Records are from the first level or not.
I saw your sample - this is the functionality I need also.
In my case i have generic data and I use AutoGenerateFields = True; What could I do in this case? How to override the LabelPresenter and DataRecordPresenter styles only for the ChildRecords?
Looking forward to your suggestion,
When you buy a license you get both the WPF3 and WPF4 assemblies, so I assume you are looking for ver.4 in C:\Windows\assembly, where is the GAC for CLR 1, 2 and 3 and the GAC for CLR 4 is here C:\Windows\Microsoft.NET\assembly\GAC_MSIL. Please let me know if this helps you or you need further clarifications on this matter.