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

Hierarchical Grid

13 Answers 389 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Peter
Top achievements
Rank 1
Peter asked on 01 Nov 2011, 04:37 AM
In the hierarchical grid below, I have a self-referencial table that has the hieratchical data.
I cannot get the nested grid to display the same row colours as the outhermost nested grid.
I am trying to use the RowLoaded event to colour the rows, but it does not fire for the innermost
nested grids.






void
RadGridView1_RowLoaded(object sender, RowLoadedEventArgs e)
   {
       GridViewRow viewRow = e.Row as GridViewRow;
       DataRow row = e.DataElement as DataRow;
         
       //Employees employee = e.DataElement as Employees;
       if (row != null && row["ID"] != null)
       {
           long ID = (long)row["ID"];
           viewRow.IsExpandable = this.HasSubordinates(ID);
           if (row["Status"].ToString().Trim() == string.Empty)
           {
               viewRow.Background = Brushes.Turquoise;
           }
           else
           {
               viewRow.Background = Brushes.Red;
           }
       }
   }

 

 

 



 

 

 

<telerik:RadGridView x:Name="RadGridView1" RowLoaded="RadGridView1_RowLoaded" DataLoading="RadGridView1_DataLoading"  Grid.ColumnSpan="2"  LoadingRowDetails="RadGridView1_LoadingRowDetails"  
                   ColumnWidth="*" ItemsSource="{Binding TableData}"  
                   GridLinesVisibility="Horizontal" 
                   CanUserFreezeColumns="False" IsReadOnly="True" AutoGenerateColumns="False" >
      <telerik:RadGridView.Columns>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding StepName}" />
          <telerik:GridViewDataColumn DataMemberBinding="{Binding StepType}" />
          <telerik:GridViewDataColumn DataMemberBinding="{Binding TotalTime}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}" />
          <telerik:GridViewDataColumn DataMemberBinding="{Binding StartTime}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding StopTime}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorCode}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorMessage}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorOccurred}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ReportText}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding Value}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ComparisonType}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding Limits}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding Units}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}"/>
          <telerik:GridViewDataColumn DataMemberBinding="{Binding PID}"/>
      </telerik:RadGridView.Columns>
      <telerik:RadGridView.ChildTableDefinitions>
          <telerik:GridViewTableDefinition>
              <telerik:GridViewTableDefinition.Relation>
                  <telerik:TableRelation IsSelfReference="True">
                      <telerik:TableRelation.FieldNames>
                          <telerik:FieldDescriptorNamePair 
                          ParentFieldDescriptorName="ID" 
                          ChildFieldDescriptorName="PID"/>
                      </telerik:TableRelation.FieldNames>
                  </telerik:TableRelation>
              </telerik:GridViewTableDefinition.Relation>
          </telerik:GridViewTableDefinition>
      </telerik:RadGridView.ChildTableDefinitions>
  </telerik:RadGridView>

13 Answers, 1 is accepted

Sort by
0
Maya
Telerik team
answered on 01 Nov 2011, 07:15 AM
Hello Peter,

Actually, I would recommend you to work with RowStyleSelector instead of setting Background property of each row. As the virtualization of the grid is turned on by default, the visual elements will be recycled and reused and most probably the background will be applied on different rows, once you start scrolling.
Please take a look at our online documentation and demos for a reference.
Considering how to reach the child grid, I would recommend you to take a look at this article for additional information.
 

Kind regards,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

0
Peter
Top achievements
Rank 1
answered on 01 Nov 2011, 10:09 PM

I have added the RowStyleSelector as you suggested with no improvements. The topmost grid is painted correctly but the nested grids are not coloured. I need to hook to some event when the nested tables are displayed. Incidentally, you will see that the innermost table has no subordinates ( i.e it is not expandable ) but it still shows as expandable in the inner grid.
I am attaching a picture of the screen.

 

UserControl x:Class="WpfTreeandTreeMapCtrl.TreeandTreeMap"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:telerikQuickStart="clr-namespace:Telerik.Windows.Controls.QuickStart;assembly=Telerik.Windows.Controls"
    xmlns:example="clr-namespace:WpfTreeAndTreeMapCtrl"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
  
    <UserControl.Resources>
        <SolidColorBrush x:Key="folderBackground" Color="#7A8774" />
        <SolidColorBrush x:Key="folderBorder" Color="#FFFBE8" />
        <Style TargetType="telerik:RadTreeMapItem">
            <Setter Property="Foreground" Value="White" />
        </Style>
    </UserControl.Resources>
  
    <UserControl.DataContext>
        <example:ExampleViewModel />
    </UserControl.DataContext>
  
    <telerikQuickStart:QuickStart.ExampleHeader>
        <TextBlock Text="Directory listing" Margin="8"/>
    </telerikQuickStart:QuickStart.ExampleHeader>
  
    <Grid x:Name="LayoutRoot">
        <Grid.Resources>
            <Style x:Key="PassedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"    />
            </Style>
            <Style x:Key="FailedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"  />
            </Style>
            <Style x:Key="SkippedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"    />
            </Style>
            <Style x:Key="BlankStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"  />
            </Style>
              
            <example:StatusConverter x:Key="converter" />
            <example:ConditionalStyleSelector x:Key="selector" ConditionConverter="{StaticResource converter}">
                <example:ConditionalStyleSelector.Rules>
                    <example:ConditionalStyleRule Style="{StaticResource PassedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>PASSED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource FailedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>FAILED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource SkippedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>SKIPPED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource BlankStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>BLANK</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                </example:ConditionalStyleSelector.Rules>
            </example:ConditionalStyleSelector>
        </Grid.Resources>
        <Grid  Name="DisplayGrid"  Background="Red"  >
            <Grid.ColumnDefinitions  >
                <ColumnDefinition Width="300*" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="18*" />
                <ColumnDefinition Width="282*" />
            </Grid.ColumnDefinitions>
            <telerik:RadGridView x:Name="RadGridView1" RowLoaded="RadGridView1_RowLoaded" DataLoading="RadGridView1_DataLoading"  Grid.ColumnSpan="2" 
                             ColumnWidth="*" ItemsSource="{Binding TableData}"  
                             GridLinesVisibility="Horizontal" 
                             CanUserFreezeColumns="False" IsReadOnly="True" AutoGenerateColumns="False"  RowStyleSelector="{StaticResource selector}" >              
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StepName}" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StepType}" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding TotalTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StartTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StopTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorCode}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorMessage}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorOccurred}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ReportText}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Value}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ComparisonType}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Limits}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Units}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding PID}"/>
                </telerik:RadGridView.Columns>
                <telerik:RadGridView.ChildTableDefinitions>
                    <telerik:GridViewTableDefinition>
                        <telerik:GridViewTableDefinition.Relation>
                            <telerik:TableRelation IsSelfReference="True">
                                <telerik:TableRelation.FieldNames>
                                    <telerik:FieldDescriptorNamePair 
                                    ParentFieldDescriptorName="ID"
                                    ChildFieldDescriptorName="PID"/>
                                  </telerik:TableRelation.FieldNames>
                            </telerik:TableRelation>
                        </telerik:GridViewTableDefinition.Relation>
                    </telerik:GridViewTableDefinition>
                </telerik:RadGridView.ChildTableDefinitions>
            </telerik:RadGridView>
            <GridSplitter HorizontalAlignment="Right"
                  VerticalAlignment="Stretch" 
                  Grid.Column="1" ResizeBehavior="BasedOnAlignment"
                  Width="5" Background="#FFBCBCBC"/>
            <telerik:RadTreeMap ItemsSource="{Binding Data}" LayoutStrategy="Squarified" Grid.Column="2" Grid.ColumnSpan="3" MouseDoubleClick="RadTreeMap_MouseDoubleClick" PreviewMouseDoubleClick="RadTreeMap_MouseDoubleClick">
                <telerik:RadTreeMap.TypeDefinitions>
                    <telerik:TypeDefinition TargetTypeName="Folder" ValuePath="Size" ChildrenPath="Children"
                                        LabelPath="Name" ToolTipPath="Size" ToolTipFormat="Size: {0:N0} KB">
                        <telerik:TypeDefinition.Mappings>
                            <telerik:BrushColorizer Brush="{StaticResource folderBackground}" />
                            <telerik:BrushColorizer Brush="{StaticResource folderBorder}" TargetPropertyName="BorderBrush" />
                        </telerik:TypeDefinition.Mappings>
                    </telerik:TypeDefinition>
                    <telerik:TypeDefinition TargetTypeName="File" ValuePath="Size"
                                        LabelPath="Name" ToolTipPath="Size" ToolTipFormat="Size: {0:N0} KB">
                        <telerik:TypeDefinition.Mappings>
                            <example:FileCustomMapping />
                            <telerik:BrushColorizer Brush="{StaticResource folderBorder}" TargetPropertyName="BorderBrush" />
                        </telerik:TypeDefinition.Mappings>
                    </telerik:TypeDefinition>
                </telerik:RadTreeMap.TypeDefinitions>
            </telerik:RadTreeMap>
        </Grid>
    </Grid>
</UserControl>

0
Maya
Telerik team
answered on 03 Nov 2011, 01:09 PM
Hello Peter,

Could you try to set the RowStyleSeletor for the child grid in the DataLoading event similarly to the approach illustrated in the article mentioned above ? Is it applied in this way or you still get the same behavior ? 
 

Regards,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

0
Peter
Top achievements
Rank 1
answered on 03 Nov 2011, 03:02 PM
Maya,
Thanks for responding.
I can certainly trap that code in the data loading event but I don't know how to set the colour of the row. Below you see I try to set the background to chocolate but it does not work. Ideally I would like to set the color of the row based on the value of the status field.

Peter
private void RadGridView1_DataLoading(object sender, GridViewDataLoadingEventArgs e)
        {
  
            GridViewDataControl dataControl = (GridViewDataControl)sender;
  
            if (dataControl.ParentRow != null)
            {
                  
                dataControl.ShowGroupPanel = true;
                dataControl.AutoGenerateColumns = false;
                dataControl.CanUserFreezeColumns = false;
                dataControl.IsReadOnly = true;
                //dataControl.ChildTableDefinitions.Clear();
  
                GridViewDataColumn column = new Telerik.Windows.Controls.GridViewDataColumn();
                column.DataMemberBinding = new Binding("StepName");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("StepType");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("StepGroup");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("TotalTime");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("Status");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("StartTime");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("StopTime");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("ErrorCode");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("ErrorMessage");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("ErrorOccurred");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("ReportText");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("Value");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("Comparisontype");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("Limits");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("Units");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("ID");
                dataControl.Columns.Add(column);
  
                column = new GridViewDataColumn();
                column.DataMemberBinding = new Binding("PID");
                dataControl.Columns.Add(column);
                dataControl.Background = Brushes.Chocolate;
            }
0
Peter
Top achievements
Rank 1
answered on 03 Nov 2011, 03:28 PM
Maya,
I have defined the styles in the XAML like this in the XAML, how can I have the same functionality in the c
behind?

Peter
<
Grid.Resources>
      <Style x:Key="PassedStatusStyle" TargetType="telerik:GridViewRow">
          <Setter Property="Background" Value="#7F2FB3FD"    />
      </Style>
      <Style x:Key="FailedStatusStyle" TargetType="telerik:GridViewRow">
          <Setter Property="Background" Value="#7F2FB3FD"  />
      </Style>
      <Style x:Key="SkippedStatusStyle" TargetType="telerik:GridViewRow">
          <Setter Property="Background" Value="#7F2FB3FD"    />
      </Style>
      <Style x:Key="BlankStatusStyle" TargetType="telerik:GridViewRow">
          <Setter Property="Background" Value="#7F2FB3FD"  />
      </Style>
        
      <example:StatusConverter x:Key="converter" />
      <example:ConditionalStyleSelector x:Key="selector" ConditionConverter="{StaticResource converter}">
          <example:ConditionalStyleSelector.Rules>
              <example:ConditionalStyleRule Style="{StaticResource PassedStatusStyle}">
                  <example:ConditionalStyleRule.Value>
                      <sys:String>PASSED</sys:String>
                  </example:ConditionalStyleRule.Value>
              </example:ConditionalStyleRule>
              <example:ConditionalStyleRule Style="{StaticResource FailedStatusStyle}">
                  <example:ConditionalStyleRule.Value>
                      <sys:String>FAILED</sys:String>
                  </example:ConditionalStyleRule.Value>
              </example:ConditionalStyleRule>
              <example:ConditionalStyleRule Style="{StaticResource SkippedStatusStyle}">
                  <example:ConditionalStyleRule.Value>
                      <sys:String>SKIPPED</sys:String>
                  </example:ConditionalStyleRule.Value>
              </example:ConditionalStyleRule>
              <example:ConditionalStyleRule Style="{StaticResource BlankStatusStyle}">
                  <example:ConditionalStyleRule.Value>
                      <sys:String>BLANK</sys:String>
                  </example:ConditionalStyleRule.Value>
              </example:ConditionalStyleRule>
          </example:ConditionalStyleSelector.Rules>
      </example:ConditionalStyleSelector>
  </Grid.Resources>
0
Peter
Top achievements
Rank 1
answered on 07 Nov 2011, 09:28 PM
So far I have not resolved my problem - still spinning my wheels!.
I have added the HierarchyChildTemplate/DataTemplate section as someone suggested, I can now hook into the loaded event for the child grid but now it shows nothing. This is a self referential grid . I should call a method that returns the data that is based on the expansion of the parent row item for that grid but I don't know how to do this.
Why can't I attach the style property of the child grid to the parent grid?
I am anxious to get this to work!. Can you please respond to my questions.

Thanks,
Peter

<UserControl x:Class="WpfTreeandTreeMapCtrl.TreeandTreeMap"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:telerikQuickStart="clr-namespace:Telerik.Windows.Controls.QuickStart;assembly=Telerik.Windows.Controls"
    xmlns:example="clr-namespace:WpfTreeAndTreeMapCtrl"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">
  
    <UserControl.Resources>
        <SolidColorBrush x:Key="folderBackground" Color="#7A8774" />
        <SolidColorBrush x:Key="folderBorder" Color="#FFFBE8" />
        <Style TargetType="telerik:RadTreeMapItem">
            <Setter Property="Foreground" Value="White" />
        </Style>
    </UserControl.Resources>
  
    <UserControl.DataContext>
        <example:ExampleViewModel />
    </UserControl.DataContext>
  
    <telerikQuickStart:QuickStart.ExampleHeader>
        <TextBlock Text="Directory listing" Margin="8"/>
    </telerikQuickStart:QuickStart.ExampleHeader>
  
    <Grid x:Name="LayoutRoot">
        <Grid.Resources>
            <Style x:Key="PassedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"    />
            </Style>
            <Style x:Key="FailedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"  />
            </Style>
            <Style x:Key="SkippedStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"    />
            </Style>
            <Style x:Key="BlankStatusStyle" TargetType="telerik:GridViewRow">
                <Setter Property="Background" Value="#7F2FB3FD"  />
            </Style>
              
            <example:StatusConverter x:Key="converter" />
            <example:ConditionalStyleSelector x:Key="selector" ConditionConverter="{StaticResource converter}">
                <example:ConditionalStyleSelector.Rules>
                    <example:ConditionalStyleRule Style="{StaticResource PassedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>PASSED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource FailedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>FAILED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource SkippedStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>SKIPPED</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                    <example:ConditionalStyleRule Style="{StaticResource BlankStatusStyle}">
                        <example:ConditionalStyleRule.Value>
                            <sys:String>BLANK</sys:String>
                        </example:ConditionalStyleRule.Value>
                    </example:ConditionalStyleRule>
                </example:ConditionalStyleSelector.Rules>
            </example:ConditionalStyleSelector>
        </Grid.Resources>
        <Grid  Name="DisplayGrid"  Background="Red"  >
            <Grid.ColumnDefinitions  >
                <ColumnDefinition Width="300*" />
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="18*" />
                <ColumnDefinition Width="282*" />
            </Grid.ColumnDefinitions>
            <telerik:RadGridView x:Name="RadGridView1" RowLoaded="RadGridView1_RowLoaded" DataLoading="RadGridView1_DataLoading"  Grid.ColumnSpan="2"  AddingNewDataItem="RadGridView1_AddingNewDataItem" 
                             ColumnWidth="*" ItemsSource="{Binding TableData}"  
                             GridLinesVisibility="Horizontal" 
                             CanUserFreezeColumns="False" IsReadOnly="True" AutoGenerateColumns="False"  RowStyleSelector="{StaticResource selector}"
                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StepName}" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StepType}" />
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding TotalTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StartTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding StopTime}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorCode}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorMessage}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorOccurred}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ReportText}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Value}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ComparisonType}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Limits}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding Units}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}"/>
                    <telerik:GridViewDataColumn DataMemberBinding="{Binding PID}"/>
                </telerik:RadGridView.Columns>
  
                <telerik:RadGridView.ChildTableDefinitions>
                    <telerik:GridViewTableDefinition>
                        <telerik:GridViewTableDefinition.Relation>
                            <telerik:TableRelation IsSelfReference="True">
                                <telerik:TableRelation.FieldNames>
                                    <telerik:FieldDescriptorNamePair 
                                    ParentFieldDescriptorName="ID"
                                    ChildFieldDescriptorName="PID"/>
                                  </telerik:TableRelation.FieldNames>
                            </telerik:TableRelation>
                        </telerik:GridViewTableDefinition.Relation>
                    </telerik:GridViewTableDefinition>                   
                </telerik:RadGridView.ChildTableDefinitions>
                <telerik:RadGridView.HierarchyChildTemplate>
                    <DataTemplate>
                        <telerik:RadGridView  Name="childGrid" ShowGroupPanel="False"     Grid.ColumnSpan="2"   Loaded="childGrid_Loaded"
                             ColumnWidth="*" ItemsSource="{Binding TableData}" 
                             GridLinesVisibility="Horizontal" 
                             CanUserFreezeColumns="False" IsReadOnly="True" AutoGenerateColumns="False"  RowStyleSelector="{StaticResource selector}" >
                            <telerik:RadGridView.Columns>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding StepName}" />
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding StepType}" />
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding TotalTime}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Status}" />
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding StartTime}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding StopTime}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorCode}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorMessage}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ErrorOccurred}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ReportText}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Value}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ComparisonType}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Limits}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding Units}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}"/>
                                <telerik:GridViewDataColumn DataMemberBinding="{Binding PID}"/>
                            </telerik:RadGridView.Columns>
                            <telerik:RadGridView.ChildTableDefinitions>
                                <telerik:GridViewTableDefinition>
                                    <telerik:GridViewTableDefinition.Relation>
                                        <telerik:TableRelation IsSelfReference="True">
                                            <telerik:TableRelation.FieldNames>
                                                <telerik:FieldDescriptorNamePair 
                                    ParentFieldDescriptorName="ID"
                                    ChildFieldDescriptorName="PID"/>
                                            </telerik:TableRelation.FieldNames>
                                        </telerik:TableRelation>
                                    </telerik:GridViewTableDefinition.Relation>
                                </telerik:GridViewTableDefinition>
  
                            </telerik:RadGridView.ChildTableDefinitions>
                        </telerik:RadGridView>
                    </DataTemplate>
                </telerik:RadGridView.HierarchyChildTemplate>
            </telerik:RadGridView>
            <GridSplitter HorizontalAlignment="Right"
                  VerticalAlignment="Stretch" 
                  Grid.Column="1" ResizeBehavior="BasedOnAlignment"
                  Width="5" Background="#FFBCBCBC"/>
            <telerik:RadTreeMap ItemsSource="{Binding Data}" LayoutStrategy="Squarified" Grid.Column="2" Grid.ColumnSpan="3" MouseDoubleClick="RadTreeMap_MouseDoubleClick" PreviewMouseDoubleClick="RadTreeMap_MouseDoubleClick">
                <telerik:RadTreeMap.TypeDefinitions>
                    <telerik:TypeDefinition TargetTypeName="Folder" ValuePath="Size" ChildrenPath="Children"
                                        LabelPath="Name" ToolTipPath="Size" ToolTipFormat="Size: {0:N0} KB">
                        <telerik:TypeDefinition.Mappings>
                            <telerik:BrushColorizer Brush="{StaticResource folderBackground}" />
                            <telerik:BrushColorizer Brush="{StaticResource folderBorder}" TargetPropertyName="BorderBrush" />
                        </telerik:TypeDefinition.Mappings>
                    </telerik:TypeDefinition>
                    <telerik:TypeDefinition TargetTypeName="File" ValuePath="Size"
                                        LabelPath="Name" ToolTipPath="Size" ToolTipFormat="Size: {0:N0} KB">
                        <telerik:TypeDefinition.Mappings>
                            <example:FileCustomMapping />
                            <telerik:BrushColorizer Brush="{StaticResource folderBorder}" TargetPropertyName="BorderBrush" />
                        </telerik:TypeDefinition.Mappings>
                    </telerik:TypeDefinition>
                </telerik:RadTreeMap.TypeDefinitions>
            </telerik:RadTreeMap>
        </Grid>
    </Grid>
</UserControl>
0
Maya
Telerik team
answered on 10 Nov 2011, 07:04 PM
Hi Peter,

I am attaching a sample project illustrating how you can set RowStyleSelector for a self-reference hierarchical grid. Please take a look at it and let me know whether this is the behavior you require.
 

Greetings,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

0
Peter
Top achievements
Rank 1
answered on 12 Nov 2011, 05:40 AM
Maya,
The example you sent me is not sufficient.
In one of your examples you have the following sample code. Is it possible to get the current item row instead of the parent row?
In that way I could check if the row is expandible,
We are moving slowly with this project. How much does a service contract cost?

Peter
private void RadGridView1_DataLoading(object sender, GridViewDataLoadingEventArgs e)
       {
           GridViewDataControl dataControl = (GridViewDataControl)sender;
             
           if (dataControl.ParentRow != null)


0
Maya
Telerik team
answered on 14 Nov 2011, 10:06 AM
Hello Peter,

Generally, you can get a row during the RowLoaded event and check its status there. However, in order to suggest the most appropriate solution, it would be great if you could share a bit more details. Would you clarify why the suggested approach is not appropriate for you ?
Considering your second question, I would recommend you to run through this post for additional reference.
 

All the best,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

0
Peter
Top achievements
Rank 1
answered on 14 Nov 2011, 02:35 PM
Maya,
This is a situation with the nested grid where you have an outergrid with a series of nested grids. As you see in the first example I gave. The problem is in the colouring of the nested grids because when the child grids are loaded, the row_loaded event is not fired.

Peter
0
Maya
Telerik team
answered on 14 Nov 2011, 03:48 PM
Hi Peter,

Unfortunately, we reached our limits of suggesting what could be the most appropriate solution for your particular case. It would be great if you could send us a sample project illustrating your scenario and a detailed description of what is the desired behavior. Once we are aware of you exact requirements, we will be able to suggest any further. 
Thank you for your understanding. 

Regards,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

0
Peter
Top achievements
Rank 1
answered on 30 Nov 2011, 06:46 PM

Maya,

I am attaching a sample project with the issues I referred to.
Here are the instructions for running the project:
1. Unzip the project.
2. Create a folder c:\testdata2 and copy the file sample.rlx to this folder.
     sample.rlx is a compress form of an XML file ( in case you want to have a look at it ).

 In the display there is a cascading grid on the left and a tree map on the right which are really 2 views of the same data.

The issues are:

1. The cascading grid does not preserve the colors of the outer grid.
2. I cannot scroll the contents of a nested grid.
3. The treemap does not color some of the rectangles. If I put the breakpoint in the FileCustomMapping code sometimes it does not hit the break point.

4. Instead of manually zooming in the treemap, is there anyway I can click on a rectangle and zoom in that node?

5. When I zoom in that node, can I dynamically "filter" to that grid on the left side?

I cannot attach a zipped file. How can I send you the code?

 

Thanks.

0
Maya
Telerik team
answered on 01 Dec 2011, 08:46 AM
Hello Peter,

Zip files can be attached only when you open a support ticket. Would you try to do so and attach the application there ?
Thank you in advance.
 
Regards,
Maya
the Telerik team

Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

Tags
GridView
Asked by
Peter
Top achievements
Rank 1
Answers by
Maya
Telerik team
Peter
Top achievements
Rank 1
Share this question
or