Datagrid not allowing sorting in UWP

Lettuce 121 Reputation points
2020-02-05T06:31:00.82+00:00

Hi,

I'm using the UWP Datagrid control mentioned here: https://learn.microsoft.com/en-us/windows/communitytoolkit/controls/datagrid_guidance/datagrid_basics

And I'm trying to allow the user to be able to sort columns. I'm tried with CanUserSortColumns="True" on the grid and CanUserSort="True" on the columns. But nothing is happening when clicking the headers.

Looks like I can't enter xaml code here also?

Universal Windows Platform (UWP)
0 comments No comments
{count} votes

Accepted answer
  1. Paula Morgan 276 Reputation points
    2020-02-05T13:15:34.567+00:00

    @Lettuce

    You also need to add code to the sorting event.

    The documentation is here:
    https://learn.microsoft.com/en-us/windows/communitytoolkit/controls/datagrid_guidance/group_sort_filter

    Here's the sample code:

    private void dg_Sorting(object sender, DataGridColumnEventArgs e)  
    {  
        //Use the Tag property to pass the bound column name for the sorting implementation   
        if (e.Column.Tag.ToString() == "Range")  
        {  
            //Implement sort on the column "Range" using LINQ  
            if (e.Column.SortDirection == null || e.Column.SortDirection == DataGridSortDirection.Descending)  
            {  
                dg.ItemsSource = new ObservableCollection(from item in _items  
                                                                    orderby item.Range ascending  
                                                                    select item);  
                e.Column.SortDirection = DataGridSortDirection.Ascending;  
            }  
            else  
            {  
                dg.ItemsSource = new ObservableCollection(from item in _items  
                                                                    orderby item.Range descending  
                                                                    select item);  
                e.Column.SortDirection = DataGridSortDirection.Descending;  
            }  
        }  
        // add code to handle sorting by other columns as required  
          
        // Remove sorting indicators from other columns  
        foreach (var dgColumn in dg.Columns)  
        {  
            if (dgColumn.Tag.ToString() != e.Column.Tag.ToString())  
            {  
                dgColumn.SortDirection = null;  
            }  
        }      
    }  
    
    1 person found this answer helpful.
    0 comments No comments

0 additional answers

Sort by: Most helpful