public Example()
        {
            InitializeComponent();

			var csd = new ColumnSortDescriptor() { Column = this.radGridView.Columns["Country"] };
			this.radGridView.SortDescriptors.Add(csd);

			var cgd = new ColumnGroupDescriptor() { Column = this.radGridView.Columns["Country"] };
			this.radGridView.GroupDescriptors.Add(cgd);
		}
Exemple #2
0
        private void RadGridView_Grouping(object sender, Telerik.Windows.Controls.GridViewGroupingEventArgs e)
        {
            if (e.Action == GroupingEventAction.Place)
            {
                e.Cancel = true;
                ColumnGroupDescriptor currentDescriptor = e.GroupDescriptor as ColumnGroupDescriptor;

                SortingGroupDescriptor sortingDescriptor = new SortingGroupDescriptor();
                sortingDescriptor.Member = (currentDescriptor.Column as GridViewDataColumn).DataMemberBinding.Path.Path;
                foreach (AggregateFunction function in (currentDescriptor.Column as GridViewDataColumn).AggregateFunctions)
                {
                    sortingDescriptor.AggregateFunctions.Add(function);
                }
                (sender as RadGridView).GroupDescriptors.Add(sortingDescriptor);
            }
        }
        public Example()
        {
            InitializeComponent();

            var csd = new ColumnSortDescriptor()
            {
                Column = this.radGridView.Columns["Country"]
            };

            this.radGridView.SortDescriptors.Add(csd);

            var cgd = new ColumnGroupDescriptor()
            {
                Column = this.radGridView.Columns["Country"]
            };

            this.radGridView.GroupDescriptors.Add(cgd);
        }
Exemple #4
0
        private void OnUngroup(object parameter)
        {
            GridViewHeaderCell cell = parameter as GridViewHeaderCell;

            if (cell != null && cell.Column != null && cell.Column.DataControl != null && cell.Column.CanGroup())
            {
                RadGridView grid = cell.Column.DataControl as RadGridView;

                ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType <ColumnGroupDescriptor>()
                                            where object.Equals(d.Column, cell.Column)
                                            select d).FirstOrDefault();

                if (gd != null)
                {
                    grid.GroupDescriptors.Remove(gd);
                }
            }
        }
Exemple #5
0
        private bool CanGroupby(object parameter)
        {
            GridViewHeaderCell cell = parameter as GridViewHeaderCell;

            if (cell != null && cell.Column != null && cell.Column.DataControl != null && cell.Column.CanGroup())
            {
                RadGridView grid = cell.Column.DataControl as RadGridView;

                ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType <ColumnGroupDescriptor>()
                                            where object.Equals(d.Column, cell.Column)
                                            select d).FirstOrDefault();

                if (gd == null)
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #6
0
        private void OnGroupby(object parameter)
        {
            GridViewHeaderCell cell = parameter as GridViewHeaderCell;

            if (cell != null && cell.Column != null && cell.Column.DataControl != null && cell.Column.CanGroup())
            {
                RadGridView grid = cell.Column.DataControl as RadGridView;

                ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType <ColumnGroupDescriptor>()
                                            where object.Equals(d.Column, cell.Column)
                                            select d).FirstOrDefault();

                if (gd == null)
                {
                    ColumnGroupDescriptor newDescriptor = new ColumnGroupDescriptor();
                    newDescriptor.Column        = cell.Column;
                    newDescriptor.SortDirection = ListSortDirection.Ascending;
                    grid.GroupDescriptors.Add(newDescriptor);
                }
            }
        }
Exemple #7
0
        void OnMenuItemClick(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu)sender;

            GridViewHeaderCell cell        = menu.GetClickedElement <GridViewHeaderCell>();
            RadMenuItem        clickedItem = ((RadRoutedEventArgs)e).OriginalSource as RadMenuItem;
            GridViewColumn     column      = cell.Column;

            if (clickedItem.Parent is RadMenuItem)
            {
                return;
            }

            string header = Convert.ToString(clickedItem.Header);

            using (grid.DeferRefresh())
            {
                ColumnSortDescriptor sd = (from d in grid.SortDescriptors.OfType <ColumnSortDescriptor>()
                                           where object.Equals(d.Column, column)
                                           select d).FirstOrDefault();

                if (header.Contains("Sort Ascending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
                    newDescriptor.Column        = column;
                    newDescriptor.SortDirection = ListSortDirection.Ascending;

                    grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Sort Descending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
                    newDescriptor.Column        = column;
                    newDescriptor.SortDirection = ListSortDirection.Descending;

                    grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Clear Sorting"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }
                }
                else if (header.Contains("Group by"))
                {
                    ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType <ColumnGroupDescriptor>()
                                                where object.Equals(d.Column, column)
                                                select d).FirstOrDefault();

                    if (gd == null)
                    {
                        ColumnGroupDescriptor newDescriptor = new ColumnGroupDescriptor();
                        newDescriptor.Column        = column;
                        newDescriptor.SortDirection = ListSortDirection.Ascending;
                        grid.GroupDescriptors.Add(newDescriptor);
                    }
                }
                else if (header.Contains("Ungroup"))
                {
                    ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType <ColumnGroupDescriptor>()
                                                where object.Equals(d.Column, column)
                                                select d).FirstOrDefault();
                    if (gd != null)
                    {
                        grid.GroupDescriptors.Remove(gd);
                    }
                }
            }
        }
        public static void SetGrouping(SortList descriptor)
        {
            if (_grid == null || _grid.Target == null || descriptor == null)
            {
                return;
            }

            var grid = (GridViewDataControl)_grid.Target;

            lock (grid)
            {
                grid.GroupDescriptors.Clear();
                foreach (var sortUnit in descriptor.Where(x => x.IsGrouped))
                {
                    var column = grid.Columns.OfType<GridViewDataColumn>().FirstOrDefault(x => x.UniqueName == sortUnit.ColumnName);
                    if (column == null)
                    {
                        continue;
                    }

                    var columnGroupDescriptor = new ColumnGroupDescriptor
                        {
                            Column = column,
                            DisplayContent = column.Header
                        };

                    if (!grid.GroupDescriptors.Contains(columnGroupDescriptor))
                    {
                        grid.GroupDescriptors.Add(columnGroupDescriptor);
                        SetColumnVisibility(column.UniqueName, false);
                    }
                }
            }
        }
Exemple #9
0
        private void OnGroupby(object parameter)
        {
            GridViewHeaderCell cell = parameter as GridViewHeaderCell;
            if (cell != null && cell.Column != null && cell.Column.DataControl != null && cell.Column.CanGroup())
            {
                RadGridView grid = cell.Column.DataControl as RadGridView;

                ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType<ColumnGroupDescriptor>()
                                            where object.Equals(d.Column, cell.Column)
                                            select d).FirstOrDefault();

                if (gd == null)
                {
                    ColumnGroupDescriptor newDescriptor = new ColumnGroupDescriptor();
                    newDescriptor.Column = cell.Column;
                    newDescriptor.SortDirection = ListSortDirection.Ascending;
                    grid.GroupDescriptors.Add(newDescriptor);
                }
            }
        }
        //This method refreshes group indexes of columns. Indexes are used by EasyReports to repeat grouping hierarchy.
        private void RefreshGroupIndexes(ColumnGroupDescriptor columnGroupDescriptor, GridViewGroupingEventArgs args)
        {
            if (!(_grid.DataContext is ISearchViewModel))
                return;

            var sourceColumns = ((ISearchViewModel)_grid.DataContext).Columns;

            if (sourceColumns == null || !sourceColumns.Any())
                return;

            string columnName, prefix;

            var splitterIndex = columnGroupDescriptor.Column.UniqueName.LastIndexOf('.');
            if (splitterIndex == -1)
            {
                columnName = columnGroupDescriptor.Column.UniqueName;
                prefix = null;
            }
            else
            {
                columnName = columnGroupDescriptor.Column.UniqueName.Substring(splitterIndex + 1);
                prefix = columnGroupDescriptor.Column.UniqueName.Substring(0, splitterIndex);
            }

            var currentColumnItem = ((ISearchViewModel)_grid.DataContext).Columns.FirstOrDefault(x => x.ColumnName == columnName && x.Prefix == prefix);

            if (currentColumnItem != null)
            {
                var moveUp = false;
                var startIndex = 0;
                var stopIndex = 0;

                switch (args.Action)
                {
                    case GroupingEventAction.Place:
                        if (args.Index != null)
                            startIndex = args.Index.Value;
                        stopIndex = _grid.GroupCount - 1;
                        moveUp = true;
                        break;
                    case GroupingEventAction.Move:
                        {
                            if (currentColumnItem.GroupLevel != null)
                            {
                                var oldIndex = currentColumnItem.GroupLevel.Value;
                                if (args.Index != null)
                                {
                                    var newIndex = args.Index.Value;

                                    if (oldIndex < newIndex)
                                    {
                                        startIndex = oldIndex + 1;
                                        stopIndex = newIndex;
                                    }
                                    else if (oldIndex > newIndex)
                                    {
                                        startIndex = newIndex;
                                        stopIndex = oldIndex - 1;
                                        moveUp = true;
                                    }
                                }
                            }
                        }

                        break;
                    case GroupingEventAction.Remove:
                        if (currentColumnItem.GroupLevel != null)
                            startIndex = currentColumnItem.GroupLevel.Value + 1;

                        stopIndex = _grid.GroupCount - 1;
                        break;
                    case GroupingEventAction.Sort:
                        return;
                }

                currentColumnItem.GroupLevel = args.Index;

                for (var i = startIndex; i <= stopIndex; i++)
                {
                    var fullColumnName = ((ColumnGroupDescriptor)_grid.GroupDescriptors[i]).Column.UniqueName;

                    splitterIndex = fullColumnName.LastIndexOf('.');
                    if (splitterIndex == -1)
                    {
                        columnName = fullColumnName;
                        prefix = null;
                    }
                    else
                    {
                        columnName = fullColumnName.Substring(splitterIndex + 1);
                        prefix = fullColumnName.Substring(0, splitterIndex);
                    }

                    var col = sourceColumns.First(x => x.ColumnName == columnName && x.Prefix == prefix);

                    col.GroupLevel = moveUp ? col.GroupLevel + 1 : col.GroupLevel - 1;
                }
            }
        }
        void OnMenuItemClick(object sender, RoutedEventArgs e)
        {
            RadContextMenu menu = (RadContextMenu) sender;

            GridViewHeaderCell cell = menu.GetClickedElement<GridViewHeaderCell>();
            RadMenuItem clickedItem = ((RadRoutedEventArgs) e).OriginalSource as RadMenuItem;
            GridViewColumn column = cell.Column;

            if (clickedItem.Parent is RadMenuItem)
                return;

            string header = Convert.ToString(clickedItem.Header);

            using (grid.DeferRefresh())
            {
                ColumnSortDescriptor sd = (from d in grid.SortDescriptors.OfType<ColumnSortDescriptor>()
                                           where object.Equals(d.Column, column)
                                           select d).FirstOrDefault();

                if (header.Contains("Sort Ascending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
					newDescriptor.Column = column;
					newDescriptor.SortDirection = ListSortDirection.Ascending;

					grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Sort Descending"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }

                    ColumnSortDescriptor newDescriptor = new ColumnSortDescriptor();
					newDescriptor.Column = column;
					newDescriptor.SortDirection = ListSortDirection.Descending;

					grid.SortDescriptors.Add(newDescriptor);
                }
                else if (header.Contains("Clear Sorting"))
                {
                    if (sd != null)
                    {
                        grid.SortDescriptors.Remove(sd);
                    }
                }
                else if (header.Contains("Group by"))
                {
                    ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType<ColumnGroupDescriptor>()
                                                               where object.Equals(d.Column, column)
                                                               select d).FirstOrDefault();

                    if (gd == null)
                    {
                        ColumnGroupDescriptor newDescriptor = new ColumnGroupDescriptor();
						newDescriptor.Column = column;
						newDescriptor.SortDirection = ListSortDirection.Ascending;
						grid.GroupDescriptors.Add(newDescriptor);
                    }
                }
                else if (header.Contains("Ungroup"))
                {
                    ColumnGroupDescriptor gd = (from d in grid.GroupDescriptors.OfType<ColumnGroupDescriptor>()
                                                               where object.Equals(d.Column, column)
                                                               select d).FirstOrDefault();
                    if (gd != null)
                    {
                        grid.GroupDescriptors.Remove(gd);
                    }
                }
            }
        }