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

GridViewGroupRow appears/dissapears randomly

0 Answers 82 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Yana
Top achievements
Rank 1
Yana asked on 24 Aug 2011, 02:59 PM
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)
                    )
                );
            }


No answers yet. Maybe you can help?

Tags
GridView
Asked by
Yana
Top achievements
Rank 1
Share this question
or