Skip to main content
A newer version of this page is available. .

CustomColumnSortEventArgs Class

Provides data for the GridControl.CustomColumnSort event.

Namespace: DevExpress.Xpf.Grid

Assembly: DevExpress.Xpf.Grid.v20.2.dll

NuGet Packages: DevExpress.WindowsDesktop.Wpf.Grid.Core, DevExpress.Wpf.Grid.Core

Declaration

public class CustomColumnSortEventArgs :
    EventArgs

Remarks

To learn more, see Sorting Modes and Custom Sorting.

Example

This example demonstrates how to implement custom sorting in the GridControl. Handle the GridControl.CustomColumnSort event, assign your custom sorted list to the e.Result property and set the e.Handled property to true.

View Example

<Window x:Class="CustomSorting.Window1" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid" 
        Title="Custom Column Sort" Height="300" Width="300" >
    <Grid>
        <dxg:GridControl ItemsSource="{Binding Items}" Grid.Row="1" 
                         CustomColumnSort="OnCustomColumnSort">
            <dxg:GridControl.Columns>
                <dxg:GridColumn FieldName="Day" GroupIndex="0" SortMode="Custom" />
                <dxg:GridColumn FieldName="Employee" />
            </dxg:GridControl.Columns>
            <dxg:GridControl.View>
                <dxg:TableView />
            </dxg:GridControl.View>
        </dxg:GridControl>
    </Grid>
</Window>
using System.Windows;
using System.Collections.Generic;
using DevExpress.Xpf.Grid;
using CustomSorting;
using System;

namespace CustomSorting {

    public partial class Window1 : Window {
        public Window1() {
            InitializeComponent();
            DataContext = new SchedulerData();
        }

        void OnCustomColumnSort(object sender, CustomColumnSortEventArgs e) {
            if (e.Column.FieldName == "Day") {
                int dayIndex1 = GetDayIndex((string)e.Value1);
                int dayIndex2 = GetDayIndex((string)e.Value2);
                e.Result = dayIndex1.CompareTo(dayIndex2);
                e.Handled = true;
            }
        }

        int GetDayIndex(string day) {
            return (int)Enum.Parse(typeof(DayOfWeek), day);
        }
    }
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CustomSorting {
    public class SchedulerData {
        const int daysInWeek = 7;
        string[] employees = new string[] { 
            "Jane", "Martin", "John", "Jack", "Amanda", "Carmen", "Wins", "Todd", "Ashley" };
        Random rnd = new Random();
        public List<SchedulerItem> Items { get; set; }
        public SchedulerData() {
            Items = new List<SchedulerItem>();
            GenerateRandomData();
        }
        void GenerateRandomData() {
            for (int i = 0; i < daysInWeek; i++) {
                int e1 = rnd.Next(employees.Length - 1);
                int e2 = e1 + 1;
                string day = DateTime.Today.AddDays(i).DayOfWeek.ToString();
                Items.Add(new SchedulerItem() { Day = day, Employee = employees[e1] });
                Items.Add(new SchedulerItem() { Day = day, Employee = employees[e2] });
            }
        }
    }

    public class SchedulerItem {
        public string Day { get; set; }
        public string Employee { get; set; }
    }
}

Inheritance

Object
EventArgs
CustomColumnSortEventArgs
See Also