Вы можете принудительно настроить столбец группировки следующим образом:
olv.ShowGroups = true;
olv.AlwaysGroupByColumn = olvColumn1;
Если вы хотите показать одно значение в столбце и сгруппировать по другому, вы можете использовать GroupByKeyGetter
olvColumn1.GroupKeyGetter = GroupKeyGetter;
Делегат будет что-то вроде:
private object GroupKeyGetter(object rowObject)
{
var o = rowObject as MyClass;
if(o == null)
return "unknown";
return o.ID;
}
Некоторые вещи не вступают в силу, пока вы не позвоните
olv.RebuildColumns();
Всегда сортировать по (произвольной функции)
Если вы хотите принудительно отсортировать какую-либо пользовательскую логику, вы можете использовать ListViewItemSorter
в событии BeforeSorting
. Это похоже на регистрацию CustomSorter
(но, похоже, не работает, когда ShowGroups
имеет значение true).
olv.BeforeSorting += olv_BeforeSorting;
Тогда
private void olv_BeforeSorting(object sender, BrightIdeasSoftware.BeforeSortingEventArgs e)
{
//example sort based on the last letter of the object name
var s = new OLVColumn();
s.AspectGetter = (o) => ((MyClass)o).Name.Reverse().First();
this.olv.ListViewItemSorter = new ColumnComparer(
s, SortOrder.Descending, e.ColumnToSort, e.SortOrder);
e.Handled = true;
}