/// <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); } }
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); } } }
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; }
//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 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) }); } }