Individual sorting per group

2 posts, 0 answers
  1. Jasper
    Jasper avatar
    1 posts
    Member since:
    Nov 2011

    Posted 14 Oct 2014 Link to this post

    Hi

    We are trying to do custom sorting per grouping in a datagrid and I've been unable to find any examples. Say we have 2 groups, foo and bar, and we want to sort the row on 2 different properties. The groups are, in this particular example, known and I somehow like to specify a GroupSortingExpression per grouping. 

    In the attached screenshot, I would like to sort the group 'group-1' by foo and the group 'group-2' by bar. Is this possible?

    Any hints are greatly appreciated!
    Regards
    /Jasper

    using System;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using Telerik.Windows.Data;
     
    namespace WpfApplication2
    {
        public class DataItemCollection
        {
            private ObservableCollection<DataItem> _internalItems;
            public ObservableCollection<DataItem> Items
            {
                get
                {
                    return _internalItems ?? (_internalItems = new ObservableCollection<DataItem>
                    {
                        new DataItem("group-1", "bar-1", "foo-1", new DateTime(2000, 01, 2)),
                        new DataItem("group-1", "bar-3", "foo-3", new DateTime(2000, 01, 1)),
                        new DataItem("group-1", "bar-2", "foo-0", new DateTime(2000, 01, 1)),
                        new DataItem("group-2", "bar-4", "foo-4", new DateTime(2000, 01, 1)),
                        new DataItem("group-2", "bar-2", "foo-2", new DateTime(2000, 01, 4)),
                        new DataItem("group-2", "bar-5", "foo-5", new DateTime(2000, 01, 3))
                    });
                }
            }
        }
     
        public class DataItem
        {
            public DataItem(string @group, string bar, string foo, DateTime date)
            {
                Group = @group;
                Bar = bar;
                Foo = foo;
                Date = date;
     
                GroupingInfo = new DataGroupingInfo(@group);
     
                 
            }
     
            public string Foo { get; set; }
     
            public string Group { get; set; }
     
            public string Bar { get; set; }
     
            public DateTime Date { get; set; }
     
            public DataGroupingInfo GroupingInfo { get; set; }
        }
     
        public class DataGroupingInfo : IEquatable<DataGroupingInfo>, IComparable<DataGroupingInfo>, IComparable
        {
            public DataGroupingInfo(string p1)
            {
                Property1 = p1;
            }
     
            public string Property1 { get; set; }
     
            public bool Equals(DataGroupingInfo other)
            {
                return other.Property1 == Property1;
            }
     
            public int CompareTo(DataGroupingInfo other)
            {
                return String.Compare(Property1, other.Property1, StringComparison.Ordinal);
            }
     
            public override int GetHashCode()
            {
                return (Property1 != null ? Property1.GetHashCode() : 0);
            }
     
            public int CompareTo(object obj)
            {
                return CompareTo((DataGroupingInfo) obj);
            }
        }
     
        public class DataItemInfoGroupDescriptor : GroupDescriptor<DataItem, DataGroupingInfo, string>
        {
            public DataItemInfoGroupDescriptor()
            {
                GroupingExpression = t => t.GroupingInfo;
                 
                GroupSortingExpression = g => g.Key.Property1;
            }
     
            public override ListSortDirection? SortDirection
            {
                get { return ListSortDirection.Ascending; }
            }
        }
    }

  2. Dimitrina
    Admin
    Dimitrina avatar
    3769 posts

    Posted 15 Oct 2014 Link to this post

    Hello Jasper,

    Such an example is available in the following Sorting the groups  forum thread. Would you please try it and let me know how does it work for you? 


    Regards,
    Dimitrina
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
Back to Top