GridViewGroupRow appears/dissapears randomly

1 posts, 0 answers
  1. Yana
    Yana avatar
    32 posts
    Member since:
    Aug 2011

    Posted 24 Aug 2011 Link to this post

    Hello, I'm having a problem on displaying my GridViewGroupRow. I have a RadGrid named RadtabDaily
    and RadItems named Sunday  - Friday respectively. Each tabitem has its own RadGrid, named: GridViewMonday, to GridViewSunday. My problem is that
    the GridGroupFooter does not appear. this happens randomly. (the GridViewGroupRow appears in GridViewFriday, but
    not in other Grids.

     Attached here is my XAML code, C# code and Screenshot.

    <
    telerik:RadTabItem Header="Saturday" Name="TabSaturday" Height="70">
     
                                   <telerik:RadGridView AutoGenerateColumns="False" Margin="15,13,12,17" ShowGroupFooters="True" ItemsSource="{Binding Customers}" x:Name="GridViewSaturday" CanUserDeleteRows="{Binding IsChecked, Mode=TwoWay, ElementName=CanUserDeleteRowsCheckBox}" ShowColumnFooters="True" CanUserFreezeColumns="False" DataContext="{StaticResource MyViewModel}">
                                       <telerik:RadGridView.GroupRowStyle>
                                           <Style TargetType="telerik:GridViewGroupRow">
                                               <Setter Property="ShowHeaderAggregates" Value="False" />
                                           </Style>
                                       </telerik:RadGridView.GroupRowStyle>
     
     
                                       <telerik:RadGridView.Columns>
                                   <telerik:GridViewColumn Header="Add">
                                       <telerik:GridViewColumn.CellTemplate>
                                           <DataTemplate>
                                               <Button Content="Add"
                               DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Path=DataContext}"
                               Command="{Binding DeleteCrewCommand}"
                               CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:GridViewCell}}, Path=DataContext}"
                               IsEnabled="True">
                                               </Button>
                                           </DataTemplate>
                                       </telerik:GridViewColumn.CellTemplate>
                                   </telerik:GridViewColumn>
                                   <telerik:GridViewColumn Header="Delete">
                                       <telerik:GridViewColumn.CellTemplate>
                                           <DataTemplate>
                                               <Button Content="Delete"
                               DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}}, Path=DataContext}"
                               Command="{Binding DeleteCrewCommand}"
                               CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:GridViewCell}}, Path=DataContext}"
                               IsEnabled="True">
                                               </Button>
                                           </DataTemplate>
                                       </telerik:GridViewColumn.CellTemplate>
                                   </telerik:GridViewColumn>
                                   <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" Header="Customer" Width="200"/>
                                           <telerik:GridViewComboBoxColumn Header="Project" DataMemberBinding="{Binding ProjectId}"
                                                   SelectedValueMemberPath="ID"
                                                   DisplayMemberPath="Name"
                                                   ItemsSource="{Binding Projects, Source={StaticResource MyViewModel}}"/>
                                           <telerik:GridViewDataColumn DataMemberBinding="{Binding Task}" Header="Task" />
                                           <telerik:GridViewDataColumn DataMemberBinding="{Binding Duration}" Header="Duration">
     
                                               <telerik:GridViewDataColumn.AggregateFunctions>
                                                   <telerik:SumFunction Caption="Total: "/>
                                               </telerik:GridViewDataColumn.AggregateFunctions>
                                           </telerik:GridViewDataColumn>
                                           <telerik:GridViewDataColumn DataMemberBinding="{Binding Description}" Header="Description" Width="275"/>
                                           <!--<telerik:GridViewDataColumn DataMemberBinding="{Binding TotalPerCustomer}" Header="Total">
                                       <telerik:GridViewDataColumn.AggregateFunctions>
                                           <telerik:SumFunction Caption="Grand Total: "/>
                                       </telerik:GridViewDataColumn.AggregateFunctions>
                                   </telerik:GridViewDataColumn>-->
                                   
                               </telerik:RadGridView.Columns>
     
                                   </telerik:RadGridView>
     
                       </telerik:RadTabItem>

    V
    CC# Code:

    ColumnGroupDescriptor descriptor = new ColumnGroupDescriptor();
                descriptor.Column = this.GridViewSaturday.Columns["Duration"];
                descriptor.Column = this.GridViewSunday.Columns["Duration"];
                descriptor.Column = this.GridViewMonday.Columns["Duration"];
                descriptor.Column = this.GridViewTuesday.Columns["Duration"];
                descriptor.Column = this.GridViewWednesday.Columns["Duration"];
                descriptor.Column = this.GridViewThursday.Columns["Duration"];
                descriptor.Column = this.GridViewFriday.Columns["Duration"];
     
                this.GridViewSaturday.GroupDescriptors.Add(descriptor);
                this.GridViewSunday.GroupDescriptors.Add(descriptor);
                this.GridViewMonday.GroupDescriptors.Add(descriptor);
                this.GridViewTuesday.GroupDescriptors.Add(descriptor);
                this.GridViewWednesday.GroupDescriptors.Add(descriptor);
                this.GridViewThursday.GroupDescriptors.Add(descriptor);
                this.GridViewFriday.GroupDescriptors.Add(descriptor);
     
     
                 
                 
     
            }
     
             
     
            public class MyGroupFooterCellStyleSelector : StyleSelector
            {
                public override System.Windows.Style SelectStyle(object item, System.Windows.DependencyObject container)
                {
                    GridViewGroupFooterCell cell = container as GridViewGroupFooterCell;
                    GridViewGroupFooterRow groupFooterRow = cell.ParentRow as GridViewGroupFooterRow;
                    GridViewGroupRow groupRow = groupFooterRow.ParentGroupRow;
                    QueryableCollectionViewGroup group = groupRow.DataContext as QueryableCollectionViewGroup;
     
                    if (group != null)
                    {
                        AggregateFunction f = cell.Column.AggregateFunctions.FirstOrDefault();
                        if (f != null)
                        {
                            AggregateResult result = group.AggregateResults[f.FunctionName];
     
                            Style style = new Style(typeof(GridViewGroupFooterCell));
     
                            if (result != null && result.Value.GetType() == typeof(double) && (double)result.Value > 10)
                            {
                                style.Setters.Add(new Setter(GridViewGroupFooterCell.BackgroundProperty, GetColorFromHexa("#7F2FB3FD")));
                            }
     
                            return style;
                            
                        }
                    }
     
                    return new Style(typeof(GridViewGroupFooterCell));
                }
     
                public static SolidColorBrush GetColorFromHexa(string hexaColor)
                {
                    return new SolidColorBrush(
                        Color.FromArgb(
                            Convert.ToByte(hexaColor.Substring(1, 2), 16),
                            Convert.ToByte(hexaColor.Substring(3, 2), 16),
                            Convert.ToByte(hexaColor.Substring(5, 2), 16),
                            Convert.ToByte(hexaColor.Substring(7, 2), 16)
                        )
                    );
                }


Back to Top