Edit this page

Programmatic Grouping

Besides the built-in grouping functionality you are able to use a programmatic approach to group the data in RadGridView. This is achieved via the control's GroupDescriptors collection. This collection of IGroupDescriptor objects allows you to use descriptors (GroupDescriptor or ColumnGroupDescriptor) to define grouping criteria and group's sorting direction for the bound data.

The GroupDescriptorsCollection is an ObservableItemCollection which means you can not only add, but also remove descriptors from it as well as clear the collection.

This article will describe two implementations of the IGroupDescriptor interface.

GroupDescriptor

When you add a new descriptor to the collection, RadGridView's data is automatically grouped according it. Example 1 demonstrates how to create and configure group descriptors.

Example 1: Initiate and configure group descriptors

GroupDescriptor descriptor = new GroupDescriptor();
descriptor.Member = "Country";
descriptor.SortDirection = ListSortDirection.Ascending;
Dim descriptor As New GroupDescriptor()
descriptor.Member = "Country"
descriptor.SortDirection = ListSortDirection.Ascending

The Member property defines the property, by which the data will be grouped, and the SortDirection property allows you to define the direction in which the groups will be sorted.

Example 2 illustrates how to create the group descriptor in XAML.

Example 2: Define group descriptors in XAML

<telerik:GroupDescriptor Member="Country"
             SortDirection="Ascending" />

To use the created descriptor to group the data in the RadGridView you have to add it to the GroupDescriptors collection.

Example 3: Add descriptor to GroupDescriptors collection

<telerik:RadGridView x:Name="radGridView"
                 AutoGenerateColumns="False">
    <telerik:RadGridView.GroupDescriptors>
        <telerik:GroupDescriptor Member="Country"
                             SortDirection="Ascending" />
    </telerik:RadGridView.GroupDescriptors>
    <!--...-->
</telerik:RadGridView>

Example 3: Add descriptor to GroupDescriptors collection

this.radGridView.GroupDescriptors.Add(descriptor);
Me.radGridView.GroupDescriptors.Add(descriptor)

After the descriptor is defined, the data will be grouped by the Country property and will look as if you have dragged and dropped the Country column header into the grouping area.

Except Member and SortDirection properties, the GroupDescriptor exposes a DisplayContent property which allows you to change the content of the rectangle representing the group in the grouping area.

Example 4: Set the DisplayContent property

<telerik:GroupDescriptor Member="Country"
             SortDirection="Ascending"
             DisplayContent="Country Group" />
Dim descriptor2 As New GroupDescriptor()
descriptor2.Member = "Country"
descriptor2.SortDirection = ListSortDirection.Ascending
descriptor2.DisplayContent = "Country Group"

[C] Example 4: Set the DisplayContent property

GroupDescriptor descriptor2 = new GroupDescriptor();
descriptor2.Member = "Country";
descriptor2.SortDirection = ListSortDirection.Ascending;
descriptor2.DisplayContent = "Country Group";

Figure 1: The box displayed in the group panel after the DisplayContent is set

The box displayed in the group panel after the DisplayContent is set

In the group rows you are able to display aggregate functions, which display information about the data contained in the group. To learn more about how to add aggregate functions to the group rows take a look at the Group Aggregates topic.

ColumnGroupDescriptor

An alternative way of manipulating the group descriptors of RadGridView is the new (added in Q3 2010) ColumnGroupDescriptor class. It has three important properties:

  • Column: The column that will be grouped.

  • DisplayContent: Allows you to change the content of the rectangle representing the group that appears in the grouping area.

  • SortDirection: Allows you to define the direction in which the groups will be sorted.

As you see the last two properties are similar to the same properties of the GroupDescriptor class.

As of Q3 2011 you can add a ColumnGroupDescriptor both in code behind and XAML. With all the prior versions you can only set it in code behind.

Example 5 shows how to add a ColumnGroupDescriptor to RadGridView which groups by the Name column in descending order.

Example 5: Add ColumnGroupDescriptor to RadGridView

<telerik:ColumnGroupDescriptor Column="{Binding Columns[\Name], ElementName=clubsGrid}"
             SortDirection="Descending"  />

Example 5: Add ColumnGroupDescriptor to RadGridView

this.radGridView.GroupDescriptors.Add(new ColumnGroupDescriptor()
{
    Column = this.radGridView.Columns["Name"],
    SortDirection = ListSortDirection.Descending
});
Me.radGridView.GroupDescriptors.Add(New ColumnGroupDescriptor() With {
 .Column = Me.radGridView.Columns("Name"),
 .SortDirection = ListSortDirection.Descending
})

See Also

Was this article helpful? Yes No

Give article feedback

Tell us how we can improve this article

Dummy