示例#1
0
 public XtraForm2(BindingList <DataStore> list)
 {
     this.list = list;
     InitializeComponent( );
     {
         this.dataStoreTreeList.OptionsView.ShowSummaryFooter             = true;
         this.dataStoreTreeList.OptionsMenu.ShowConditionalFormattingItem = true;
         this.dataStoreTreeList.OptionsFind.AlwaysVisible = true;
         this.dataStoreTreeList.OptionsView.HeaderFilterButtonShowMode = DevExpress.XtraEditors.Controls.FilterButtonShowMode.Button;
         this.dataStoreTreeList.OptionsView.ShowAutoFilterRow          = true;
         this.dataStoreTreeList.OptionsView.ShowFilterPanelMode        = DevExpress.XtraTreeList.ShowFilterPanelMode.ShowAlways;
     }
     //
     this.dataStoreTreeList.DataSource = this.list;
     //
     //MainWindow.CustomersList customersList = new MainWindow.CustomersList( );
     //customersList.LoadCustomers( );
     //this.gridControl1.DataSource = customersList;
     //
     //MainWindow.MyVirtualTables o = new MainWindow.MyVirtualTables( );
     //o.MakeDataTables( );
     //System.Data.DataTable dataTable = o.dataSet.Tables[ "ParentTable" ];
     //this.gridControl1.DataSource = dataTable;
     //
     //MainWindow.MyVirtualTables o = new MainWindow.MyVirtualTables( );
     //System.Data.DataSet x = o.x( );
     //System.Data.DataTable dataTable = x.Tables[ "DSSS_01" ];
     //this.gridControl1.DataSource = dataTable;
     //
     MainWindow.MyVirtualTables o = new MainWindow.MyVirtualTables( );
     System.Data.DataSet        x = o.x( );
     this.gridControl1.DataSource = o.dv;
     //
     this.gridControl1.RefreshDataSource( );
     //
     {
         this.dataStoreTreeList.Columns["ValidStagePathDir"].Visible = false;
         this.dataStoreTreeList.Columns["ValidProviderName"].Visible = false;
         this.dataStoreTreeList.Columns["ProviderName"].Visible      = false;
     }
     {
         TreeListFormatRule         fr         = new TreeListFormatRule( );
         FormatConditionRuleDataBar fcrDataBar = new FormatConditionRuleDataBar( );
         fr.Column = this.dataStoreTreeList.Columns["AqbCounter"];
         fcrDataBar.PredefinedName = "Orange Bar";
         fr.Rule = fcrDataBar;
         this.dataStoreTreeList.FormatRules.Add(fr);
     }
     {
         TreeListFormatRule         fr         = new TreeListFormatRule( );
         FormatConditionRuleDataBar fcrDataBar = new FormatConditionRuleDataBar( );
         fr.Column = this.dataStoreTreeList.Columns["MdiCounter"];
         fcrDataBar.PredefinedName = "Blue Bar";
         fr.Rule = fcrDataBar;
         this.dataStoreTreeList.FormatRules.Add(fr);
     }
     {
         TreeListFormatRule            fr            = new TreeListFormatRule( );
         FormatConditionRuleExpression fcrExpression = new FormatConditionRuleExpression( );
         fr.Column     = this.dataStoreTreeList.Columns["StagePathDir"];
         fr.ApplyToRow = false;
         fcrExpression.PredefinedName = "Red Fill, Red Text";
         fcrExpression.Expression     = "![ValidStagePathDir]";
         fr.Rule = fcrExpression;
         this.dataStoreTreeList.FormatRules.Add(fr);
     }
     {
         TreeListFormatRule            fr            = new TreeListFormatRule( );
         FormatConditionRuleExpression fcrExpression = new FormatConditionRuleExpression( );
         fr.Column     = this.dataStoreTreeList.Columns["ConnectionStringName"];
         fr.ApplyToRow = false;
         fcrExpression.PredefinedName = "Red Fill, Red Text";
         fcrExpression.Expression     = "![ValidProviderName]";
         fr.Rule = fcrExpression;
         this.dataStoreTreeList.FormatRules.Add(fr);
     }
 }
        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;