We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to avoid selection while grouping and ungrouping in SfDataGrid?

Platform: WPF |
Control: SfDataGrid |
.NET Framework: 4.5 |
Product Version:

In SfDataGrid, the selection is maintained based on SfDataGrid.SelectedItems when grouping and ungrouping. If SelectedItems is zero, then the SfDataGrid processes selection behavior as follows:

  1. While grouping, the first caption summary row is selected and also if the Groups are collapsed, then the first caption summary row is selected by clearing SelectedItems.
  2. While ungrouping, first record row is selected.

    This is applicable only when SfDataGrid.SelectionUnit is Row.


If there are no SelectedItems, you can avoid the above default selection behavior by overriding the GridSelectionController, when SfDataGrid.SelectionUnit is Row. If SelectionUnit is Cell or Any, then you can override GridCellSelectionController, that handles all the selection operations in SfDataGrid.

public class GridSelectionControllerExt : GridSelectionController
    public GridSelectionControllerExt(SfDataGrid sfgrid)
        : base(sfgrid)

You can set the customized GridSelectionController, GridSelectionControllerExt as per the above code snippet, to SfDataGrid.SelectionController property, as shown in the following code snippet.

this.sfgrid.SelectionController = new GridSelectionControllerExt(sfgrid);

GridSelectionController class has various virtual methods that are called for different actions. To handle the selection while grouping or ungrouping, you have to override ProcessOnGroupChanged method in your SelectionController, as shown in the following code snippet.


protected override void ProcessOnGroupChanged(NotifyCollectionChangedEventArgs args)
            var removedItems = new List<object>();
            //Removes the items which are not in View
            this.RefreshSelectedItems(ref removedItems);
            // Resets the selected indexes based on SelectedItems
            // Update the current RowIndex 

In the above code, the ProcessOnGroupChanged method is called while grouping or ungrouping a column in SfDataGrid. RefreshSelectedItems method removes the items that are not displayed in the View. Because, while grouping, if the groups are not expanded, the SelectedItems will be cleared and the first caption summary is selected by default. The UpdateCurrentRowIndex method updates CurrentCell based on CurrentItem.


While Grouping, A Row is Selected.

Figure 1: While grouping, the first caption summary row is selected

Avoid Selecting While Grouping and Ungrouping

Figure 2: Avoid selection while grouping and ungrouping in SfDataGrid

Sample Links







2X faster development

The ultimate WPF UI toolkit to boost your development speed.
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile