Esempio n. 1
0
        /// <summary>
        /// Event when User groups the data
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgPortfolioDetails_Grouping(object sender, GridViewGroupingEventArgs e)
        {
            string methodNamespace = String.Format("{0}.{1}", GetType().FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name);

            Logging.LogBeginMethod(this.DataContextPortfolioDetails.Logger, methodNamespace);
            try
            {
                if (e.Action.ToString() != "Remove")
                {
                    if (this.dgPortfolioDetails.GroupDescriptors.Count > 0)
                    {
                        if (!this.dgPortfolioDetails.GroupDescriptors.Contains(e.GroupDescriptor))
                        {
                            e.Cancel = true;
                            // this.dgPortfolioDetails.GroupDescriptors.Clear();
                            dgPortfolioDetails.GroupDescriptors.Add(e.GroupDescriptor);
                        }
                        Telerik.Windows.Controls.GridView.ColumnGroupDescriptor groupDescriptor = e.GroupDescriptor as Telerik.Windows.Controls.GridView.ColumnGroupDescriptor;
                        DataContextPortfolioDetails.GroupingColumn = Convert.ToString(groupDescriptor.Column.UniqueName);
                    }
                }
                else
                {
                    DataContextPortfolioDetails.GroupingColumn = "No Grouping";
                }
                this.dgPortfolioDetails.GroupPanelItemStyle = this.Resources["GridViewGroupPanelItemStyle"] as Style;
            }
            catch (Exception ex)
            {
                Prompt.ShowDialog("Message: " + ex.Message + "\nStackTrace: " + Logging.StackTraceToString(ex), "Exception", MessageBoxButton.OK);
                Logging.LogException(this.DataContextPortfolioDetails.Logger, ex);
            }
        }
Esempio n. 2
0
 private void GridViewParts_OnGrouping(object sender, GridViewGroupingEventArgs e)
 {
     if (e.Action == GroupingEventAction.Place)
     {
         e.Cancel = true;
         var           c = (ColumnGroupDescriptor)e.GroupDescriptor;
         CountFunction f = new CountFunction();
         f.Caption = "Count: ";
         GroupDescriptor descriptor = new GroupDescriptor();
         descriptor.Member         = c.Column.UniqueName;
         descriptor.DisplayContent = c.DisplayContent;
         descriptor.AggregateFunctions.Add(f);
         this.GridViewParts.GroupDescriptors.Add(descriptor);
     }
 }
        private void Grouping(object sender, GridViewGroupingEventArgs e)
        {
            if (e.Action == GroupingEventAction.Place)
            {
                var cgd = e.GroupDescriptor as ColumnGroupDescriptor;

                if (cgd != null && cgd.Column.UniqueName == "Date")
                {
                    e.Cancel = true;

                    if (grid.GroupDescriptors.OfType<GroupDescriptorBase>().Where(d => d.DisplayContent == "Year" || d.DisplayContent == "Month").Any())
                    {
                        return;
                    }

                    AddCustomGroupDescriptors();
                }
            }
            else if (e.Action == GroupingEventAction.Remove)
            {
                var gd = e.GroupDescriptor as GroupDescriptorBase;
                GroupDescriptorBase gdToRemove = null;

                if (gd != null)
                {
                    if (gd.DisplayContent == "Year")
                    {
                        gdToRemove = grid.GroupDescriptors.OfType<GroupDescriptorBase>().Where(d => d.DisplayContent == "Month").FirstOrDefault();
                    }
                    else if (gd.DisplayContent == "Month")
                    {
                        gdToRemove = grid.GroupDescriptors.OfType<GroupDescriptorBase>().Where(d => d.DisplayContent == "Year").FirstOrDefault();
                    }
                }

                if (gdToRemove != null)
                {
                    grid.GroupDescriptors.Remove(gdToRemove);
                }
            }
        }
Esempio n. 4
0
        private void Grouping(object sender, GridViewGroupingEventArgs e)
        {
            if (e.Action == GroupingEventAction.Place)
            {
                var cgd = e.GroupDescriptor as ColumnGroupDescriptor;

                if (cgd != null && cgd.Column.UniqueName == "Date")
                {
                    e.Cancel = true;

                    if (grid.GroupDescriptors.OfType <GroupDescriptorBase>().Where(d => d.DisplayContent == "Year" || d.DisplayContent == "Month").Any())
                    {
                        return;
                    }

                    AddCustomGroupDescriptors();
                }
            }
            else if (e.Action == GroupingEventAction.Remove)
            {
                var gd = e.GroupDescriptor as GroupDescriptorBase;
                GroupDescriptorBase gdToRemove = null;

                if (gd != null)
                {
                    if (gd.DisplayContent == "Year")
                    {
                        gdToRemove = grid.GroupDescriptors.OfType <GroupDescriptorBase>().Where(d => d.DisplayContent == "Month").FirstOrDefault();
                    }
                    else if (gd.DisplayContent == "Month")
                    {
                        gdToRemove = grid.GroupDescriptors.OfType <GroupDescriptorBase>().Where(d => d.DisplayContent == "Year").FirstOrDefault();
                    }
                }

                if (gdToRemove != null)
                {
                    grid.GroupDescriptors.Remove(gdToRemove);
                }
            }
        }
 private void GridView_Grouping(object sender, GridViewGroupingEventArgs e)
 {
     ApplicationCommands.SystemBusy.Execute("Grupperer data");
 }
		private void OnGridViewGrouping(object sender, GridViewGroupingEventArgs e)
		{
			// prevent the user from performing grouping operations
			e.Cancel = true;
		}
Esempio n. 7
0
        //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;
                }
            }
        }
Esempio n. 8
0
        void grid_Grouping(object sender, GridViewGroupingEventArgs e)
        {
            var snd = sender as RadGridView;

            var pageableList = _grid.DataContext as IPageableList;
            var columnGroupDescriptor = e.GroupDescriptor as ColumnGroupDescriptor;
            if (columnGroupDescriptor == null || pageableList == null)
                return;

            var column = columnGroupDescriptor.Column;

            if (((IHasColumns)_grid.DataContext).Columns != null)
            {
                if (
                    ((IHasColumns)_grid.DataContext).Columns.FirstOrDefault(
                        x =>
                        string.Format(CultureInfo.InvariantCulture, "{0}{1}", string.IsNullOrEmpty(x.Prefix) ? string.Empty : x.Prefix + ".", x.ColumnName) == column.UniqueName && x.IsGroupable)
                    == null)
                {
                    e.Cancel = true;
                    return;
                }
            }

            RefreshGroupIndexes(columnGroupDescriptor, e);

            if (e.Action == GroupingEventAction.Place)
            {
                //add new sort desriptor for new grouped column and place it in the certain order among other descriptors
                var sortDescriptors = pageableList.SortDescriptors;
                if (sortDescriptors != null && e.Index.HasValue)
                {
                    var currentSorting = sortDescriptors.FirstOrDefault(x => x.ColumnName == column.UniqueName);

                    if (currentSorting != null)
                        sortDescriptors.Remove(currentSorting);
                    sortDescriptors.Insert(e.Index.Value, new SortDescriptor(column.UniqueName, SortDirection.Ascending, true));
                }
                else
                    sortDescriptors = new SortList { new SortDescriptor(column.UniqueName, SortDirection.Ascending, true) };

                if (_grid.GroupCount == 0 || (e.Index.HasValue && e.Index.Value == 0))
                {
                    pageableList.Refresh(columnGroupDescriptor.Column.UniqueName, sortDescriptors);
                    columnGroupDescriptor.Column.AggregateFunctions.Clear();
                    columnGroupDescriptor.Column.AggregateFunctions.Add(new CountFunction { Caption = "Total:", FunctionName = "GroupFunction" });
                }
                else
                    pageableList.Refresh(sortDescriptors);

                if (snd != null)
                    snd.Columns[columnGroupDescriptor.Column.UniqueName].IsVisible = false;
            }
            else if (e.Action == GroupingEventAction.Remove)
            {
                //clear sort descriptor for column removed from group panel
                if (pageableList.SortDescriptors != null && pageableList.SortDescriptors.Count > 0)
                {
                    var currentSorting = pageableList.SortDescriptors.FirstOrDefault(x => x.ColumnName == column.UniqueName);

                    if (currentSorting != null)
                        pageableList.SortDescriptors.Remove(currentSorting);
                }

                if (_grid.GroupCount == 1)
                {
                    columnGroupDescriptor.Column.AggregateFunctions.Clear();
                    pageableList.Refresh(string.Empty);
                }
                else
                {
                    if (columnGroupDescriptor.Column.UniqueName.EndsWith(pageableList.GroupColumn, StringComparison.Ordinal))
                    {
                        columnGroupDescriptor.Column.AggregateFunctions.Clear();

                        var groupDescriptor = _grid.GroupDescriptors[1] as ColumnGroupDescriptor;
                        if (groupDescriptor != null)
                        {
                            groupDescriptor.Column.AggregateFunctions.Clear();

                            pageableList.Refresh(groupDescriptor.Column.UniqueName);
                            groupDescriptor.Column.AggregateFunctions.Add(new CountFunction { Caption = "Total:", FunctionName = "GroupFunction" });
                        }
                    }
                    else
                        pageableList.Refresh(pageableList.GroupColumn);
                }

                if (snd != null)
                    snd.Columns[columnGroupDescriptor.Column.UniqueName].IsVisible = true;
            }
            else if (e.Action == GroupingEventAction.Move)
            {
                if (pageableList.SortDescriptors != null && pageableList.SortDescriptors.Count > 0)
                {
                    var currentSorting = pageableList.SortDescriptors.FirstOrDefault(x => x.ColumnName == column.UniqueName);

                    if (currentSorting != null && e.Index.HasValue)
                    {
                        var currentSortingCopy = new SortDescriptor(currentSorting.ColumnName, currentSorting.Direction, currentSorting.IsGrouped);
                        pageableList.SortDescriptors.Remove(currentSorting);
                        pageableList.SortDescriptors.Insert(e.Index.Value, currentSortingCopy);
                    }
                }

                if (e.Index.HasValue)
                {
                    if (e.Index.Value == 0)
                        pageableList.Refresh(column.UniqueName);
                    else if (pageableList.SortDescriptors != null)
                        pageableList.Refresh(pageableList.SortDescriptors[0].ColumnName);
                }
                else if (pageableList.SortDescriptors != null && pageableList.SortDescriptors.Count > 0)
                    pageableList.Refresh(pageableList.CurrentPageNumber);
            }
            else if (e.Action == GroupingEventAction.Sort)
            {
                if (e.GroupDescriptor.SortDirection == ListSortDirection.Descending)
                    e.GroupDescriptor.SortDirection = null;

                if (pageableList.SortDescriptors != null)
                {
                    if (pageableList.SortDescriptors.Count > 0)
                    {
                        var currentSorting = pageableList.SortDescriptors.FirstOrDefault(x => x.ColumnName == column.UniqueName);

                        if (currentSorting != null)
                        {
                            switch (currentSorting.Direction)
                            {
                                case SortDirection.Ascending:
                                    {
                                        var currentSortingIndex = pageableList.SortDescriptors.IndexOf(currentSorting);
                                        pageableList.SortDescriptors.RemoveAt(currentSortingIndex);
                                        pageableList.SortDescriptors.Insert(currentSortingIndex, new SortDescriptor(currentSorting.ColumnName, SortDirection.Descending, true));
                                    }

                                    break;
                                case SortDirection.Descending:
                                    {
                                        var currentSortingIndex = pageableList.SortDescriptors.IndexOf(currentSorting);
                                        pageableList.SortDescriptors.RemoveAt(currentSortingIndex);
                                        pageableList.SortDescriptors.Insert(currentSortingIndex, new SortDescriptor(currentSorting.ColumnName, SortDirection.Ascending, true));
                                    }

                                    break;
                            }
                        }
                    }
                    else
                        pageableList.SortDescriptors.Add(new SortDescriptor(column.UniqueName, SortDirection.Ascending, true));

                    pageableList.Refresh(pageableList.CurrentPageNumber);
                }
                else
                    pageableList.Refresh(new SortList { new SortDescriptor(column.UniqueName, SortDirection.Ascending, true) });
            }
        }