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.
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();
_list.Sort(sort);
_grid.ItemsSource = _list;
}
}
Ruchir Agarwal