RadControls for WinForms

RadListView supports both custom grouping and automatic grouping based on a certain property. The latter is achievable by enabling the EnableGrouping and ShowGroups properties and then adding the desired GroupDescriptors to the GroupDescriptors collection of the control. The following code will group the items according to their Value property:

Copy[C#] Group by value
radListView1.EnableGrouping = true;
radListView1.ShowGroups = true;
GroupDescriptor groupByValue = new GroupDescriptor(new SortDescriptor[] { new SortDescriptor("Value", ListSortDirection.Descending) });
radListView1.GroupDescriptors.Add(groupByValue);
Copy[VB.NET] Group by value
RadListView1.EnableGrouping = True
RadListView1.ShowGroups = True
Dim groupByValue As New GroupDescriptor(New SortDescriptor() {New SortDescriptor("Value", ListSortDirection.Descending)})
RadListView1.GroupDescriptors.Add(groupByValue)

listview-features-grouping 001

And here is how you can group by a certain column when DetailsView is used:

Copy[C#] Group by column
radListView1.EnableGrouping = true;
radListView1.ShowGroups = true;
GroupDescriptor groupByType = new GroupDescriptor(new SortDescriptor[] 
{
    new SortDescriptor("Type", ListSortDirection.Descending), 
});
radListView1.GroupDescriptors.Add(groupByType);
Copy[VB.NET] Group by column
RadListView1.EnableGrouping = True
RadListView1.ShowGroups = True
Dim groupByType As New GroupDescriptor(New SortDescriptor() {New SortDescriptor("Type", ListSortDirection.Descending)})
RadListView1.GroupDescriptors.Add(groupByType)

listview-features-grouping 002

To take advantage of the custom grouping feature of RadListView, just enable the EnableCustomGrouping property and add the desired descriptor. Here is an example for custom grouping:

Copy[C#] Custom grouping
radListView1.EnableCustomGrouping = true;
radListView1.ShowGroups = true;
ListViewDataItemGroup docGroup = new ListViewDataItemGroup("Documents");
ListViewDataItemGroup diskGroup = new ListViewDataItemGroup("Disks");
radListView1.Groups.Add(docGroup);
radListView1.Groups.Add(diskGroup);
foreach (ListViewDataItem item in radListView1.Items)
{
    if (item.Value.ToString() == "Shared Documents" || item.Value.ToString() == "Administrator's Documents")
    {
        item.Group = docGroup;
    }
    else
    {
        item.Group = diskGroup;
    }
}
Copy[VB.NET] Custom grouping
RadListView1.EnableCustomGrouping = True
RadListView1.ShowGroups = True
Dim docGroup As New ListViewDataItemGroup("Documents")
Dim diskGroup As New ListViewDataItemGroup("Disks")
RadListView1.Groups.Add(docGroup)
RadListView1.Groups.Add(diskGroup)
For Each item As ListViewDataItem In RadListView1.Items
    If item.Value = "Shared Documents" OrElse item.Value = "Administrator's Documents" Then
        item.Group = docGroup
    Else
        item.Group = diskGroup
    End If
Next

Please note, that if you are using data binding, you can use the ItemDataBound event, to assign certain item to a certain group.

listview-features-grouping 002