Articles in this section
Category / Section

How to group a column with DateTime values in .NET MAUI DataGrid?

3 mins read

.NET MAUI DataGrid control allows you to group a column with DateTime data. By default, it displays the entire DateTime value, including the time part in its cells, as shown in the following screenshot.

GroupWithTime.png

To exclude the time part in the DateTime object, apply a format to the corresponding column as shown in the code example below.

 <syncfusion:DataGridTextColumn MappingName="ShippingDate"
                               Format="dd/MM/yyyy"
                               HeaderText="Shipping Date" />

The following screenshot shows the DateTime data in the ShippingDate column without the time.

GroupWithoutTime.png

If your requirement is to group by a date column and also to display only the date part in the caption, then you can achieve it by writing a converter to apply the custom grouping logic. Refer to the code example below.

<syncfusion:SfDataGrid.GroupColumnDescriptions>
   <syncfusion:GroupColumnDescription ColumnName="ShippingDate"
                                      Comparer="{StaticResource groupDateTimeConverter}"/>
</syncfusion:SfDataGrid.GroupColumnDescriptions>

Since we have returned a string value in the converter, the groups are sorted considering the GroupKey values as strings. If you want to sort the groups considering it to be a DateTime value, then you need to write a SortComparer for it.

Refer to the following code example to create a custom SortComparer

public class CustomSortComparer : IComparer<object>, ISortDirection
{
   #region Property

   public ListSortDirection SortDirection { get; set; }

   #endregion

   #region Constructor

   public CustomSortComparer()
   {

   }

   #endregion

   #region Compare

   public int Compare(object? x, object? y)
   {

       DateTime dateX = DateTime.MaxValue;

       DateTime dateY = DateTime.MaxValue;

       if (x.GetType() == typeof(OrderInfo))
       {
           dateX = (DateTime)((OrderInfo)x).ShippingDate;

           dateY = (DateTime)((OrderInfo)y).ShippingDate;
       }

       else if (x.GetType() == typeof(Group))
       {
           dateX = (DateTime)((Group)x).Key;

           dateY = (DateTime)((Group)y).Key;
       }

       else
       {
           dateX = (DateTime)x;

           dateY = (DateTime)y;
       }

       if (DateTime.Compare(dateX, dateY) >= 0)

           return SortDirection == ListSortDirection.Ascending ? 1 : -1;

       else

           return SortDirection == ListSortDirection.Ascending ? -1 : 1;
   }

   #endregion
}

The following screenshot shows the outcome without time and proper sort order

SortComparers.png

Download the complete sample from GitHub.

Conclusion

I hope you enjoyed learning how to group a column with DateTime values in .NET MAUI DataGrid.

You can refer to our .NET MAUI DataGrid feature tour page to learn about its other groundbreaking feature representations. Explore our documentation to understand how to present and manipulate data.

For current customers, check out our .NET MAUI components on the License and Downloads page. If you are new to Syncfusion®, try our 30-day free trial to explore our .NET MAUI DataGrid and other .NET MAUI components.

Please let us know in the comments section if you have any queries or require clarification. You can also contact us through our support forums, Direct-Trac or feedback portal, or the feedback portal. We are always happy to assist you!

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied