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

GriView & Aggregators

12 Answers 147 Views
GridView
This is a migrated thread and some comments may be shown as answers.
Kristjan Einarsson
Top achievements
Rank 1
Kristjan Einarsson asked on 16 Mar 2012, 03:09 PM
HI, I need simular functionality as this example -> http://www.telerik.com/community/forums/silverlight/gridview/show-aggregates-aligned-with-columns.aspx

To explain a bit better, I have 20 - 30 columns and need to aggregate some of them while I am grouping. As well I would like to change the aggregation number as well. I know that there is no "out of the box" way to do this but is there a way ?

Best regards
Kristján

12 Answers, 1 is accepted

Sort by
0
Pavel Pavlov
Telerik team
answered on 16 Mar 2012, 03:28 PM
Hello Kristjan,

What do you mean by "I would like to change the aggregation number as well" ?

Greetings,
Pavel Pavlov
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Kristjan Einarsson
Top achievements
Rank 1
answered on 16 Mar 2012, 03:46 PM
Hi, I can explain a bit better

Lets say I have a grid that is grouped by OrderNo

OrderNo | ProductName | ProductLocation | Quantity | Value |......
+25         | -                      | -                          | 100        | 1000  |.......
+26         | -                      | -                          | 25          | 965    |.........

And I would like change the aggregated Value of the order, in other instance I might want to change the Quantity or the value.
When I would change the Value I would need to calculate the new Quantity among other values again.

Hope this make my question clearer :) If not I could go into more details.

Best regards
Kristján
0
Pavel Pavlov
Telerik team
answered on 16 Mar 2012, 04:08 PM
Hi Kristjan,

Ok let me see if I understand ..

Normally the aggregate result is represented by a TextBlock. What you need is a TextBox there , so you can enter some value inside and replace the original aggregate result  ?

Is that what you are looking for ?

Greetings,
Pavel Pavlov
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Kristjan Einarsson
Top achievements
Rank 1
answered on 16 Mar 2012, 04:11 PM
Yes that would work I think
0
Kristjan Einarsson
Top achievements
Rank 1
answered on 19 Mar 2012, 02:03 PM
Can you give me an tip how to make the aggregation columns appear in a textbox ?

Best regards
Kristján.
0
Pavel Pavlov
Telerik team
answered on 21 Mar 2012, 04:12 PM
Hi,

The attached example demonstrates a way to replace the TextBlock showing aggregate result with a TextBox
in the group footers.

Regards,
Pavel Pavlov
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Kristjan Einarsson
Top achievements
Rank 1
answered on 22 Mar 2012, 02:21 PM
Thank you for the example Pavlov.

But I was more leaning more into this direction

<Grid>
    <Grid.Resources>
        <Style TargetType="telerik:GridViewAggregateResultCell">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="telerik:GridViewAggregateResultCell">
 
                        <Border MaxWidth="200" Height="Auto" BorderThickness="1,1,1,1">
                            <Border MinWidth="100" Height="Auto" Background="#00FFFFFF" BorderThickness="1,1,1,1">
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Margin="5,-2,5,0" Foreground="#FF027BA8" Text="{Binding Caption}" />
                                    <TextBox Margin="5,-2,5,0" Foreground="#FF027BA8"
                                               Text="{Binding FormattedValue,  Mode=OneWay}" IsEnabled="True" IsReadOnly="False" />
                                </StackPanel>
                            </Border>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Grid.Resources>
    <telerik:RadGridView x:Name="RadGridView1" AutoGenerateColumns="False" ShowGroupFooters="True" >
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" />
            <telerik:GridViewDataColumn DataMemberBinding="{Binding NumberOfTimes}" >
                <telerik:GridViewDataColumn.AggregateFunctions>
                    <telerik:SumFunction SourceField="NumberOfTimes" />
                </telerik:GridViewDataColumn.AggregateFunctions>
            </telerik:GridViewDataColumn>
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>
</Grid>

But when I do it like this I can not seem to edit the textboxes, when I click them I only expand the group.

I managed to get this code to work with the example app from this thread -> http://www.telerik.com/community/forums/wpf/gridview/my-own-aggregatefunction.aspx (from 2008)

Is there a way to get this functionality with newer Telerik Dll's ?

I changed the sample app that you sent me to better fit my needs and attached an screenshot showing the header with textboxes that I cannot edit.

please advice :)

Best regards
Kristján
0
Pavel Pavlov
Telerik team
answered on 27 Mar 2012, 05:56 PM
Hi Kristjan,

I am attaching another sample. It demonstrates a bit different technique - tampering with the template of the group header.


Kind regards,
Pavel Pavlov
the Telerik team
Sharpen your .NET Ninja skills! Attend Q1 webinar week and get a chance to win a license! Book your seat now >>
0
Kristjan Einarsson
Top achievements
Rank 1
answered on 02 Apr 2012, 12:40 PM
Hi Pavel,
I have adopted the solution to .NET 4 WPF. but does not work.
It looks correct enough but I am not able to select any texboxes nor change any value.

Thanks again
Kristján
0
Pavel Pavlov
Telerik team
answered on 05 Apr 2012, 12:30 PM
Hi Kristjan,

I am attaching  a small sample targeting WPF. Hope it helps.

Regards,
Pavel Pavlov
the Telerik team

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

0
Kristjan Einarsson
Top achievements
Rank 1
answered on 10 Apr 2012, 03:59 PM
Hi again Pavel.
This is more what I am looking for, but it has some problems
  1. If you have more than one aggregate they will display in Vertical mode (even though the stackpanel is set to Horizontal)
  2. If you have more than one aggregate you cannot use Tab to switch between them unless you explode the group

This is my code

<Grid>
        <Grid.Resources>
            <Style TargetType="telerik:GridViewGroupRow" >
                <Setter Property="ShowHeaderAggregates" Value="False" />
            </Style>
        </Grid.Resources>
        <telerik:RadGridView x:Name="RadGridView1" AutoGenerateColumns="True"  DataLoaded="grid_DataLoaded" >
            <telerik:RadGridView.GroupHeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Header}" Margin="0,0,10,0" FontWeight="Bold" />
                        <telerik:AggregateResultsList ItemsSource="{Binding AggregateResults}" >
                            <telerik:AggregateResultsList.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBox Text="{Binding Value, Mode=OneWay}" />
                                    </StackPanel>
                                </DataTemplate>
                            </telerik:AggregateResultsList.ItemTemplate>
                        </telerik:AggregateResultsList>
                    </StackPanel>
                </DataTemplate>
            </telerik:RadGridView.GroupHeaderTemplate>
        </telerik:RadGridView>
    </Grid>

This is how I attach the SumFunctions (witch i need to be able to edit)
private void grid_DataLoaded(object sender, EventArgs e)
{
if (isFirst)
            {
                isFirst = false;
                foreach (GridViewDataColumn col in grid.Columns)
                        {
                            if (col.Header.ToString() == "UnitQty" || col.Header.ToString() == "UnitQtyChg")
                            {
                                SumFunction sum = new SumFunction();
                                //sum.Caption = "caption: ";
                                sum.SourceFieldType = typeof(double);
                                col.AggregateFunctions.Add(sum);
                            }
                        }
                }
        }
}

Can these problems be solved you think.
I am using rather new Telerik release -> 2012.1.326.40

Thanks again
Kristján

0
Accepted
Pavel Pavlov
Telerik team
answered on 13 Apr 2012, 04:44 PM
Hi,
Here is an updated version of the XAML with the aggregate results stacked horizontaly :
<telerik:RadGridView.GroupHeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Header}" Margin="0,0,10,0" FontWeight="Bold" />
                        <telerik:AggregateResultsList ItemsSource="{Binding AggregateResults}" >
                            <telerik:AggregateResultsList.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <StackPanel Orientation="Horizontal" />
                                </ItemsPanelTemplate>
                            </telerik:AggregateResultsList.ItemsPanel>
                            <telerik:AggregateResultsList.ItemTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="{Binding Caption}" />
                                        <TextBox Text="{Binding Value, Mode=OneWay}" />
                                    </StackPanel>
                                </DataTemplate>
                            </telerik:AggregateResultsList.ItemTemplate>
                        </telerik:AggregateResultsList>
                    </StackPanel>
                </DataTemplate>
            </telerik:RadGridView.GroupHeaderTemplate>
The important part is in yellow.


All the best,
Pavel Pavlov
the Telerik team

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

Tags
GridView
Asked by
Kristjan Einarsson
Top achievements
Rank 1
Answers by
Pavel Pavlov
Telerik team
Kristjan Einarsson
Top achievements
Rank 1
Share this question
or