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;
        }
Example #2
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;