private static void RestoreGroupingAndSorting(GridView gridView, List <GridColumnInfo> cols) { bool mayGroup = gridView.OptionsCustomization.AllowGroup; int groupCount = 0; List <GridColumnInfo> sortColumns = new List <GridColumnInfo>(); foreach (GridColumnInfo ci in cols.Where(ci => ci.SortIndex >= 0 || ci.GroupIndex >= 0).OrderBy(ci => ci.GroupIndex + (ci.SortIndex + 1) * 1000)) { sortColumns.Add(ci); if (ci.GroupIndex >= 0) { ++groupCount; } } GridColumnSortInfo[] sortInfo = new GridColumnSortInfo[sortColumns.Count]; int i = 0; foreach (var ci in sortColumns) { sortInfo[i++] = new GridColumnSortInfo(gridView.Columns[ci.FieldName], ci.SortOrder); } gridView.SortInfo.ClearAndAddRange(sortInfo, mayGroup ? groupCount : 0); gridView.OptionsView.ShowGroupPanel |= mayGroup && groupCount > 0; }
private void cmdPrintList_Click(object sender, EventArgs e) { try { //gridControl1.ShowPrintPreview(); if (gridView1.SortInfo.Count > 0) { GridColumnSortInfo i = gridView1.SortInfo[0]; string sortType = "crescente"; if (i.SortOrder == DevExpress.Data.ColumnSortOrder.Descending) { sortType = "decrescente"; } orderBy = string.Format("ordinato per {0} {1}", i.Column.FieldName.ToLower(), sortType); } PrintableComponentLink link = new PrintableComponentLink(new PrintingSystem()); link.CreateMarginalHeaderArea += new CreateAreaEventHandler(Link_CreateMarginalHeaderArea); link.CreateMarginalFooterArea += new CreateAreaEventHandler(link_CreateMarginalFooterArea); link.Component = gridControl1; link.PaperKind = System.Drawing.Printing.PaperKind.A4; link.ShowPreview(); } catch (Exception ex) { ErrorHandler.Show(ex); } }
void ClearSorting(GridView gv) { bool changeSortColumn = false; for (int i = 0; i < gv.SortInfo.Count; i++) { GridColumnSortInfo gc = gv.SortInfo[i]; if (gc.Column.FieldName != OrderFieldName) { changeSortColumn = true; break; } } if (changeSortColumn) { gv.ClearSorting(); gv.Columns[OrderFieldName].SortOrder = DevExpress.Data.ColumnSortOrder.Ascending; } }
public static void LoadGridData(GridView viewTable, GridData data) { using (new UsingProcessor(() => viewTable.BeginUpdate(), () => viewTable.EndUpdate())) { viewTable.GridControl.ForceInitialize(); if (data.Parameters != null) { var gridProperties = new GridProperties((GridView)viewTable); gridProperties.ApplyParameters(data.Parameters); } if (data.ColumnOrder != null && data.ColumnOrder.Count > 0) { var visibleColumns = new List <GridColumn>(); bool hasSummaries = false; int i = 0; foreach (var field in data.ColumnOrder) { if (string.IsNullOrWhiteSpace(field.ColumnName)) { continue; } var column = viewTable.Columns.ColumnByFieldName(field.ColumnName); if (column != null) { column.Visible = true; column.VisibleIndex = i++; visibleColumns.Add(column); column.Summary.Clear(); if (!string.IsNullOrWhiteSpace(field.Summary)) { var summaries = Utils.SplitString(field.Summary, ','); foreach (var summary in summaries) { if (Enum.TryParse <SummaryItemType>(summary, out SummaryItemType summaryType)) { column.Summary.Add(summaryType); hasSummaries = true; } } } } } if (hasSummaries) { viewTable.OptionsView.ShowFooter = true; } } using (new UsingProcessor(() => viewTable.BeginSort(), () => viewTable.EndSort())) { viewTable.ClearGrouping(); viewTable.ClearSorting(); var sortInfos = new List <GridColumnSortInfo>(); int groupColumnCount = 0; if (data.GroupBy != null && data.GroupBy.Count > 0) { foreach (var group in data.GroupBy) { if (string.IsNullOrWhiteSpace(group.ColumnName)) { continue; } var sortAscending = true; var colName = group.ColumnName; if (string.Compare(group.SortOrder, "desc", true) == 0) { sortAscending = false; } var column = viewTable.Columns.ColumnByFieldName(colName); if (column != null) { var colSortInfo = new GridColumnSortInfo(column, sortAscending ? ColumnSortOrder.Ascending : ColumnSortOrder.Descending); sortInfos.Add(colSortInfo); groupColumnCount++; } } } if (data.OrderBy != null && data.OrderBy.Count > 0) { foreach (var orderBy in data.OrderBy) { if (string.IsNullOrWhiteSpace(orderBy.ColumnName)) { continue; } var sortAscending = true; var colName = orderBy.ColumnName; if (string.Compare(orderBy.SortOrder, "desc", true) == 0) { sortAscending = false; } var column = viewTable.Columns.ColumnByFieldName(colName); if (column != null) { var colSortInfo = new GridColumnSortInfo(column, sortAscending ? ColumnSortOrder.Ascending : ColumnSortOrder.Descending); sortInfos.Add(colSortInfo); } } } viewTable.SortInfo.ClearAndAddRange(sortInfos.ToArray(), groupColumnCount); } if (data.FormatConditions != null && data.FormatConditions.Count > 0) { viewTable.FormatConditions.Clear(); foreach (var formatCondition in data.FormatConditions) { GridColumn column = null, targetColumn = null; if (!string.IsNullOrWhiteSpace(formatCondition.ColumnName)) { column = viewTable.Columns.ColumnByFieldName(formatCondition.ColumnName); } if (!string.IsNullOrWhiteSpace(formatCondition.TargetColumn)) { targetColumn = viewTable.Columns.ColumnByFieldName(formatCondition.TargetColumn); } var formatRule = Utils.NonNullString(formatCondition.FormatRule).ToLower(); switch (formatRule) { case "expression": var expression = formatCondition.Expression; if (!string.IsNullOrWhiteSpace(expression)) { var formatExpression = new FormatConditionRuleExpression() { Expression = expression }; var ruleExpression = new GridFormatRule { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = (column == null) || formatCondition.ApplyToRow, Rule = formatExpression }; ApplyFormatting(formatExpression, formatCondition); viewTable.FormatRules.Add(ruleExpression); } break; case "databar": if (column != null) { var ruleDataBar = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatDataBar = new FormatConditionRuleDataBar(); if (string.IsNullOrWhiteSpace(formatCondition.BackColor)) { formatCondition.BackColor = formatCondition.DataBar; } if (!string.IsNullOrWhiteSpace(formatCondition.AppearanceName)) { formatDataBar.PredefinedName = formatCondition.AppearanceName; } else { ApplyAppearance(formatDataBar.Appearance, formatCondition); } ruleDataBar.Rule = formatDataBar; viewTable.FormatRules.Add(ruleDataBar); } break; case "iconset": if (column != null) { if (!Enum.TryParse(formatCondition.IconSet, out IconSetType iconSetType)) { iconSetType = IconSetType.Arrows5; } var ruleIconSet = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatIconSet = new FormatConditionRuleIconSet() { IconSet = GetPredefinedIconSet(iconSetType) }; ruleIconSet.Rule = formatIconSet; viewTable.FormatRules.Add(ruleIconSet); } break; case "colorscale": if (column != null) { string colorScale = formatCondition.ColorScale; if (string.IsNullOrWhiteSpace(colorScale)) { colorScale = "White,Red"; } if (!string.IsNullOrWhiteSpace(colorScale)) { var scales = colorScale.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (scales != null && scales.Length == 2) { var ruleColorScale2 = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatColorScale2 = new FormatConditionRule2ColorScale { MinimumColor = ColorExtensions.FromHtmlColor(scales[0], Color.White), MaximumColor = ColorExtensions.FromHtmlColor(scales[1], Color.Black) }; ruleColorScale2.Rule = formatColorScale2; viewTable.FormatRules.Add(ruleColorScale2); } else if (scales != null && scales.Length >= 3) //Use first 3 colors if more are specified { var ruleColorScale3 = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatColorScale3 = new FormatConditionRule3ColorScale { MinimumColor = ColorExtensions.FromHtmlColor(scales[0], Color.White), MiddleColor = ColorExtensions.FromHtmlColor(scales[1], Color.Gray), MaximumColor = ColorExtensions.FromHtmlColor(scales[2], Color.Black) }; ruleColorScale3.Rule = formatColorScale3; viewTable.FormatRules.Add(ruleColorScale3); } } } break; case "aboveaverage": if (column != null) { var ruleAboveAverage = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatAboveAverage = new FormatConditionRuleAboveBelowAverage() { AverageType = FormatConditionAboveBelowType.Above }; ApplyFormatting(formatAboveAverage, formatCondition); ruleAboveAverage.Rule = formatAboveAverage; viewTable.FormatRules.Add(ruleAboveAverage); } break; case "belowaverage": if (column != null) { var ruleBelowAverage = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatBelowAverage = new FormatConditionRuleAboveBelowAverage() { AverageType = FormatConditionAboveBelowType.Below }; ApplyFormatting(formatBelowAverage, formatCondition); ruleBelowAverage.Rule = formatBelowAverage; viewTable.FormatRules.Add(ruleBelowAverage); } break; case "aboveorequalaverage": if (column != null) { var ruleAboveAverage = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatAboveAverage = new FormatConditionRuleAboveBelowAverage() { AverageType = FormatConditionAboveBelowType.EqualOrAbove }; ApplyFormatting(formatAboveAverage, formatCondition); ruleAboveAverage.Rule = formatAboveAverage; viewTable.FormatRules.Add(ruleAboveAverage); } break; case "beloworequalaverage": if (column != null) { var ruleBelowAverage = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatBelowAverage = new FormatConditionRuleAboveBelowAverage() { AverageType = FormatConditionAboveBelowType.EqualOrBelow }; ApplyFormatting(formatBelowAverage, formatCondition); ruleBelowAverage.Rule = formatBelowAverage; viewTable.FormatRules.Add(ruleBelowAverage); } break; case "unique": if (column != null) { var ruleUnique = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatUnique = new FormatConditionRuleUniqueDuplicate() { FormatType = FormatConditionUniqueDuplicateType.Unique }; ApplyFormatting(formatUnique, formatCondition); ruleUnique.Rule = formatUnique; viewTable.FormatRules.Add(ruleUnique); } break; case "duplicate": if (column != null) { var ruleDuplicate = new GridFormatRule() { Column = column, ColumnApplyTo = targetColumn, ApplyToRow = formatCondition.ApplyToRow }; var formatDuplicate = new FormatConditionRuleUniqueDuplicate() { FormatType = FormatConditionUniqueDuplicateType.Unique }; ApplyFormatting(formatDuplicate, formatCondition); ruleDuplicate.Rule = formatDuplicate; viewTable.FormatRules.Add(ruleDuplicate); } break; case "top": if (column != null) { var rankTop = formatCondition.Rank; var isPercent = !string.IsNullOrWhiteSpace(rankTop) && rankTop.EndsWith("%"); var strRankTop = isPercent ? rankTop[0..^ 1].TrimEnd() : rankTop;