private static void AddRowsByGridDashboardItem(GridDashboardItem gridItem, MultiDimensionalData mData, DataTable dataTable)
        {
            IList <string> axis     = mData.GetAxisNames();
            int            rowCount = GetRowCount(mData, axis);

            for (int i = 0; i < rowCount; i++)
            {
                AxisPoint point  = mData.GetAxisPoints(axis[0])[i];
                DataRow   newRow = dataTable.NewRow();
                foreach (GridColumnBase column in gridItem.Columns)
                {
                    GridMeasureColumn mCol = column as GridMeasureColumn;
                    if (mCol != null)
                    {
                        newRow[mCol.Measure.DataMember] = GetMesureValue(mData, point, mCol);
                    }

                    GridDimensionColumn dCol = column as GridDimensionColumn;
                    if (dCol != null)
                    {
                        newRow[dCol.Dimension.DataMember] = GetDimenstionValue(mData, axis, point, dCol);
                    }
                }
                dataTable.Rows.Add(newRow);
            }
        }
        public Form1()
        {
            InitializeComponent();
            Dashboard dashboard = new Dashboard(); dashboard.LoadFromXml(@"..\..\Data\Dashboard.xml");

            dashboardViewer1.Dashboard = dashboard;
            GridDashboardItem   grid          = (GridDashboardItem)dashboard.Items["gridDashboardItem1"];
            GridDimensionColumn salesPerson   = (GridDimensionColumn)grid.Columns[0];
            GridMeasureColumn   extendedPrice = (GridMeasureColumn)grid.Columns[1];

            GridItemFormatRule       topRule      = new GridItemFormatRule(extendedPrice, salesPerson);
            FormatConditionTopBottom topCondition = new FormatConditionTopBottom();

            topCondition.TopBottom     = DashboardFormatConditionTopBottomType.Top;
            topCondition.RankType      = DashboardFormatConditionValueType.Number;
            topCondition.Rank          = 3;
            topCondition.StyleSettings = new IconSettings(FormatConditionIconType.IndicatorGreenCheck);
            topRule.Condition          = topCondition;

            GridItemFormatRule       bottomRule      = new GridItemFormatRule(extendedPrice, salesPerson);
            FormatConditionTopBottom bottomCondition = new FormatConditionTopBottom();

            bottomCondition.TopBottom     = DashboardFormatConditionTopBottomType.Bottom;
            bottomCondition.RankType      = DashboardFormatConditionValueType.Percent;
            bottomCondition.Rank          = 40;
            bottomCondition.StyleSettings = new IconSettings(FormatConditionIconType.IndicatorRedFlag);
            bottomRule.Condition          = bottomCondition;

            GridItemFormatRule     aboveAverageRule      = new GridItemFormatRule(extendedPrice);
            FormatConditionAverage aboveAverageCondition = new FormatConditionAverage();

            aboveAverageCondition.AverageType   = DashboardFormatConditionAboveBelowType.Above;
            aboveAverageCondition.StyleSettings =
                new AppearanceSettings(Color.Green, FontStyle.Underline);
            aboveAverageRule.Condition = aboveAverageCondition;

            GridItemFormatRule     belowAverageRule      = new GridItemFormatRule(extendedPrice);
            FormatConditionAverage belowAverageCondition = new FormatConditionAverage();

            belowAverageCondition.AverageType   = DashboardFormatConditionAboveBelowType.Below;
            belowAverageCondition.StyleSettings =
                new AppearanceSettings(Color.Orange, FontStyle.Underline);
            belowAverageRule.Condition = belowAverageCondition;

            grid.FormatRules.AddRange(topRule, bottomRule, aboveAverageRule, belowAverageRule);
        }
        private static void CreateColumnsByGridDashboardItem(GridDashboardItem gridItem, DataTable dataTable)
        {
            foreach (GridColumnBase column in gridItem.Columns)
            {
                DataColumn        tableCol = new DataColumn();
                GridMeasureColumn mCol     = column as GridMeasureColumn;
                if (mCol != null)
                {
                    tableCol.ColumnName = mCol.Measure.DataMember;
                }

                GridDimensionColumn dCol = column as GridDimensionColumn;
                if (dCol != null)
                {
                    tableCol.ColumnName = dCol.Dimension.DataMember;
                }
                dataTable.Columns.Add(tableCol);
            }
        }
 private static object GetDimenstionValue(MultiDimensionalData mData, IList <string> axis, AxisPoint point, GridDimensionColumn dCol)
 {
     return(point.GetDimensionValue(mData.GetDimensions(axis[0]).OfType <DimensionDescriptor>().First(d => d.DataMember == dCol.Dimension.DataMember)).Value);
 }