I'm using Telerik V2011.3.1220.35 and. I create some aggregate functions dynamically to my grid. The sum/average functions cause my application to crash. To see a concrete situation, just comment or uncomment the indicated lines to see the application working or crashing :)
PS: Also, look at the First/Last aggregate functions UI result !!!
XAML
*******************************************
<Window x:Class="WpfApplication3.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
Title="Window1" Height="300" Width="300" Loaded="Window_Loaded" WindowState="Maximized">
<Grid>
<telerik:RadGridView Name="gridViewTest" AutoGenerateColumns="False" RowIndicatorVisibility="Collapsed" ShowColumnFooters="True"/>
</Grid>
</Window>
*******************************************
C#
*******************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Telerik.Windows.Controls;
using Telerik.Windows.Data;
namespace WpfApplication3
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<Person> allPersons = new List<Person>();
createGridColumns();
allPersons.Add(new Person() { LastName = "Doe", FirstName = "John", Number1 = 1, Number2 = 2, Number3 = 3 });
allPersons.Add(new Person() { LastName = "Fraser", FirstName = "Joe", Number1 = 4, Number2 = 2, Number3 = 6 });
allPersons.Add(new Person() { LastName = "Alban", FirstName = "Ricardo", Number1 = 7, Number2 = 8, Number3 = 9 });
gridViewTest.ItemsSource = allPersons;
}
private void createGridColumns()
{
GridViewDataColumn col1 = new GridViewDataColumn();
GridViewDataColumn col2 = new GridViewDataColumn();
GridViewDataColumn col3 = new GridViewDataColumn();
GridViewDataColumn col4 = new GridViewDataColumn();
GridViewDataColumn col5 = new GridViewDataColumn();
col1.Header = "LastName";
col1.UniqueName = "col1";
col1.DataMemberBinding = new Binding("LastName");
col1.AggregateFunctions.Add(new CountFunction() { Caption = "Count: " });
col2.Header = "FirstName";
col2.UniqueName = "col2";
col2.DataMemberBinding = new Binding("FirstName");
col2.AggregateFunctions.Add(new FirstFunction() { Caption = "First: " });
col2.AggregateFunctions.Add(new LastFunction() { Caption = "Last: " });
col2.AggregateFunctions.Add(new MinFunction() { Caption = "Min: " });
col2.AggregateFunctions.Add(new MaxFunction() { Caption = "Max: " });
col3.Header = "Number1";
col3.UniqueName = "col3";
col3.DataFormatString = "C2";
col3.DataMemberBinding = new Binding("Number1");
col3.AggregateFunctions.Add(new MinFunction() { Caption = "Min: " });
col3.AggregateFunctions.Add(new MaxFunction() { Caption = "Max: " });
col4.Header = "Number2";
col4.UniqueName = "col4";
col4.DataFormatString = "C2";
col4.DataMemberBinding = new Binding("Number2");
col4.AggregateFunctions.Add(new AverageFunction() { Caption = "Avg: ", SourceFieldType=typeof(decimal) }); // *** Put this line in comment to have a working app ***
col5.Header = "Number3";
col5.UniqueName = "col5";
col5.DataFormatString = "C2";
col5.DataMemberBinding = new Binding("Number3");
col5.AggregateFunctions.Add(new SumFunction() { Caption = "Sum: ", SourceFieldType = typeof(decimal) }); // *** Put this line in comment to have a working app ***
gridViewTest.Columns.Add(col1);
gridViewTest.Columns.Add(col2);
gridViewTest.Columns.Add(col3);
gridViewTest.Columns.Add(col4);
gridViewTest.Columns.Add(col5);
}
}
public class Person
{
public object LastName { get; set; }
public object FirstName { get; set; }
public object Number1 { get; set; }
public object Number2 { get; set; }
public object Number3 { get; set; }
}
}
Thank's