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