Articles in this section
Category / Section

How to Set SfRadialMenu as the Context menu for the SfDataGrid ?

1 min read

SfRadialMenu can be used as context menu of the SfDataGrid by set the SfRadialMenu as ControlTemplate of ContextMenu. The same has been explained in the below “HeaderContext” style.

 

<Style x:Key="Headercontext" TargetType="ContextMenu">
  <Setter Property="Template">
    <Setter.Value>
     <ControlTemplate>
       <syncfusion:SfRadialMenu>
        <syncfusion:SfRadialMenuItem Header="Ascending" Command="{Binding
                                     Source={x:Static 
                                     Member=local:ContextMenuCommands.SortAscending}}"
                                     CommandParameter="{Binding}"/>
        <syncfusion:SfRadialMenuItem Header="Descending" Command="{Binding
                                     Source={x:Static   
                                     Member=local:ContextMenuCommands.SortDescending}}"
                                     CommandParameter="{Binding}"/>
       </syncfusion:SfRadialMenu>
      </ControlTemplate>
     </Setter.Value>
    </Setter>
</Style>

 

Ascending and Descending command functions

#region SortAscending
        static BaseCommand sortAscending;
        public static BaseCommand SortAscending
        {
            get
            {
                if (sortAscending == null)
                    sortAscending = new BaseCommand(OnSortAscendingClicked,
                                                          CanSortAscending);
 
                return sortAscending;
            }
        }
 
 
        private static void OnSortAscendingClicked(object obj)
        {
            if (obj is GridColumnContextMenuInfo)
            {
                var grid = (obj as GridContextMenuInfo).DataGrid;
                var column = (obj as GridColumnContextMenuInfo).Column;
                grid.SortColumnDescriptions.Clear();
                grid.SortColumnDescriptions.Add(new SortColumnDescription() {  
                     ColumnName = column.MappingName,
                     SortDirection = ListSortDirection.Ascending });
            }
        }
 
        
 
 
        private static bool CanSortAscending(object obj)
        {
            if (obj is GridColumnContextMenuInfo)
            {
                var grid = (obj as GridContextMenuInfo).DataGrid;
                var column = (obj as GridColumnContextMenuInfo).Column;
                var sortColumn = grid.SortColumnDescriptions.FirstOrDefault(x => 
                    x.ColumnName == column.MappingName);
                if (sortColumn != null)
                {
                    if ((sortColumn as SortColumnDescription).SortDirection == 
                        ListSortDirection.Ascending)
                        return false;
                }
                return grid.AllowSorting;
            }
            return false;
        }
        #endregion
 
        #region SortDescending
        static BaseCommand sortDescending;
        public static BaseCommand SortDescending
        {
            get
            {
                if (sortDescending == null)
                    sortDescending = new BaseCommand(OnSortDescendingClicked, 
                                        CanSortDescending);
 
                return sortDescending;
            }
        }
 
 
        private static void OnSortDescendingClicked(object obj)
        {
            if (obj is GridColumnContextMenuInfo)
            {
                var grid = (obj as GridContextMenuInfo).DataGrid;
                var column = (obj as GridColumnContextMenuInfo).Column;
                grid.SortColumnDescriptions.Clear();
                grid.SortColumnDescriptions.Add(new SortColumnDescription() { 
                ColumnName = column.MappingName, SortDirection = 
                ListSortDirection.Descending });
            }
        }
 
        private static bool CanSortDescending(object obj)
        {
            if (obj is GridColumnContextMenuInfo)
            {
                var grid = (obj as GridContextMenuInfo).DataGrid;
                var column = (obj as GridColumnContextMenuInfo).Column;
                var sortColumn = grid.SortColumnDescriptions.FirstOrDefault(x => 
                x.ColumnName == column.MappingName);
                if (sortColumn != null)
                {
                    if ((sortColumn as SortColumnDescription).SortDirection == 
                    ListSortDirection.Descending)
                        return false;
                }
                return grid.AllowSorting;
            }
            return false;
        }
        #endregion

 

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