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