New to Telerik UI for WPFStart a free 30-day trial

Sort а DataTable Column That Contains Square Brackets in its Name in a RadGridView Scenario

Updated on Sep 15, 2025

Environment

Product Version2022.3.912
ProductRadGridView for WPF

Description

The default sorting logic of RadGridView cannot sort a column that is bound to a DataTable column, which has square brackets in its name.

Solution

To achieve a sorting functionality in this scenario, implement custom sorting logic using the Sorting event of the RadGridView control.

  1. Subscribe to the Sorting event:

    XAML
        <telerik:RadGridView Sorting="OnRadGridViewSorting"/>
  2. Retrieve the DataView of the DataTable instance that is bound to the ItemsSource property of RadGridView. Then, check if the e.Column property contains the column that is bound to the DataTable column with square brackets in its name:

    Handling the Sorting event

    C#
        private void OnRadGridViewSorting(object sender, Telerik.Windows.Controls.GridViewSortingEventArgs e)
        {
            var items = e.DataControl.ItemsSource as DataView;
    
            if (e.Column.UniqueName.Contains("MyColumnWithSquareBrackets"))
            {
    
            }
        }
  3. Utilize the Sort property of the retrieved DataView to sort the DataTable column in the direction of the new sorting state. The square brackets of the column will have to be escaped when using the Sort property:

    Setting the Sort property of the DataView

    C#
        private void OnRadGridViewSorting(object sender, Telerik.Windows.Controls.GridViewSortingEventArgs e)
        {
            var items = e.DataControl.ItemsSource as DataView;
    
            if (e.Column.UniqueName.Contains("MyColumnWithSquareBrackets"))
            {
                if (e.NewSortingState == Telerik.Windows.Controls.SortingState.Ascending)
                {
                    items.Sort = @"[[MyColumnWithSquareBrackets]]";
                }
                else if (e.NewSortingState == Telerik.Windows.Controls.SortingState.Descending)
                {
                    items.Sort = "[[MyColumnWithSquareBrackets]] desc";
                }
                else
                {
                    items.Sort = "[[MyColumnWithSquareBrackets]]";
                }
            }
        }
  4. Set the SortingState property of the sorted column to the new sorting direction. Then, to prevent the default sorting logic of RadGridView from occurring, set the e.Cancel property to true:

    The complete implementation of the custom sorting logic

    C#
        private void OnRadGridViewSorting(object sender, Telerik.Windows.Controls.GridViewSortingEventArgs e)
        {
            var items = e.DataControl.ItemsSource as DataView;
    
            if (e.Column.UniqueName.Contains("MyColumnWithSquareBrackets"))
            {
                if (e.NewSortingState == Telerik.Windows.Controls.SortingState.Ascending)
                {
                    items.Sort = @"[[MyColumnWithSquareBrackets]]";
                }
                else if (e.NewSortingState == Telerik.Windows.Controls.SortingState.Descending)
                {
                    items.Sort = "[[MyColumnWithSquareBrackets]] desc";
                }
                else
                {
                    items.Sort = "[[MyColumnWithSquareBrackets]]";
                }
            }
    
            e.Column.SortingState = e.NewSortingState;
            e.Cancel = true;
        }

The IsCustomSortingEnabled property of the column needes to be set to true, when implementing custom sorting logic.

In this article
EnvironmentDescriptionSolution
Not finding the help you need?
Contact Support