VIBlend WinForms DataGridView has a built-in feature which allows you to set a custom Sort comparer. In this post, we will show you how to sort the DataGridView rows or columns by label.
At first, we will create a Comparer which compares HierarchyItem objects by the HierarchyItem.Caption property.
C#
private class ItemLabelComparer : IComparer<HierarchyItem>
{
public int Compare(HierarchyItem item1, HierarchyItem item2)
{
return string.Compare(item1.Caption, item2.Caption);
}
}
VB .NET
Private Class ItemLabelComparer
Implements IComparer(Of HierarchyItem)
Public Function Compare(ByVal item1 As HierarchyItem, ByVal item2 As HierarchyItem) As Integer
Return String.Compare(item1.Caption, item2.Caption)
End Function
End Class
Create an instance of the ItemLabelComparer object and pass it to the RowsHierarchy.SortBy method. If you want to sort the ColumnsHierarchy, call the ColumnsHierarchy.SortBy method.
C#
ItemLabelComparer Comparer = new ItemLabelComparer();
this.vDataGridView1.RowsHierarchy.SortBy(this.vDataGridView1.ColumnsHierarchy.Items[0], sorting, Comparer);
this.Refresh();
VB .NET
Dim Comparer As New ItemLabelComparer()
Me.vDataGridView1.RowsHierarchy.SortBy(Me.vDataGridView1.ColumnsHierarchy.Items(0), sorting, Comparer)
Me.Refresh()
CodeProject