Sort Columns Using Absolute Values in C1DataGrid for WPF


Often times users need the capability to sort columns in the C1DataGrid by absolute values that do not change. Here is how that is done.

Steps to Complete:

1. Create custom logic by implementing IComparer interface

class SortByAbsolute : IComparer<Sales>
    public int Compare(Sales x, Sales y)
        double val1 = (double)x.Growth;
        double val2 = (double)y.Growth;
        var result = System.Collections.Comparer.Default.Compare(Math.Abs(val1), Math.Abs(val2));
        return result;

2. Use that custom logic to sort the individual column that needs sorted by absolute value using the SortChanging Event.

List<Sales> _list;
private void _grid_SortChanging(object sender, C1.WPF.DataGrid.DataGridSortChangingEventArgs e)
     if (e.ChangingColumns[0].Column.Name == "Growth")
         e.Cancel = true;
         _grid.ItemsSource = null;
         SortByAbsolute sort = new SortByAbsolute();
         _grid.ItemsSource = _list;

Ruchir Agarwal