private void SetReportHeader(Report report)
        {
            var reportHeader = new ReportHeaderSection();

            reportHeader.Height = Telerik.Reporting.Drawing.Unit.Cm(1.5);

            reportHeader.Name = "reportHeader";
            ReportStyles.SetChartReportHeaderStyle(reportHeader.Style);
            report.Items.Add(reportHeader);

            var titleWidth   = Unit.Cm(4);
            var titleHeight  = Unit.Cm(1);
            var titleTextBox = new TextBox();

            titleTextBox.Location = new Telerik.Reporting.Drawing.PointU(reportWidth - titleWidth, Telerik.Reporting.Drawing.Unit.Cm(0));
            titleTextBox.Name     = "txtTitle";
            //titleTextBox.Docking = DockingStyle.Top;
            titleTextBox.Width  = titleWidth;
            titleTextBox.Height = titleHeight;


            ReportStyles.SetReportTitleStyle(titleTextBox.Style);
            titleTextBox.Value = ChartReportReportDTO.ReportTitle;
            reportHeader.Items.AddRange(new Telerik.Reporting.ReportItemBase[] {
                titleTextBox
            });
        }
        private void SetReportHeader(Report report, List <ColumnSizeLocation> columnsSizeLocation)
        {
            var reportHeader = new ReportHeaderSection();

            reportHeader.Height = Telerik.Reporting.Drawing.Unit.Cm(1.5);

            reportHeader.Name = "reportHeader";
            ReportStyles.SetReportHeaderStyle(reportHeader.Style, ReportLevel);
            report.Items.Add(reportHeader);

            var titleWidth   = Unit.Cm(4);
            var titleHeight  = Unit.Cm(1);
            var titleTextBox = new TextBox();

            titleTextBox.Location = new Telerik.Reporting.Drawing.PointU(reportWidth - titleWidth, Telerik.Reporting.Drawing.Unit.Cm(0));
            titleTextBox.Name     = "txtTitle";
            //titleTextBox.Docking = DockingStyle.Top;
            titleTextBox.Width  = titleWidth;
            titleTextBox.Height = titleHeight;


            ReportStyles.SetReportTitleStyle(titleTextBox.Style);
            titleTextBox.Value = ListReportReportDTO.ReportTitle;

            //بعدا درست شود یک تکست باکس که مقدارش برابر با string.Format("= Parameters.{0}.Value", param.Name) باشد اضافه شود
            //  string paramHeader = "";
            //if (report.ReportParameters.Count > 0)
            //{
            //    foreach (var param in report.ReportParameters)
            //    {
            //        paramHeader += (paramHeader == "" ? "" : ",") + param.Name + "=" + string.Format("= Parameters.{0}.Value", param.Name); ;
            //    }

            //}
            //if (paramHeader != "")
            //    titleTextBox.Value += paramHeader;



            reportHeader.Items.AddRange(new Telerik.Reporting.ReportItemBase[] {
                titleTextBox
            });
        }
        //private List<ColumnSizeLocation> GetColumnsSizeLocation()
        //{
        //    List<ColumnSizeLocation> result = new List<ColumnSizeLocation>();

        //    int widthUnits = 0;
        //    var columns = ChartReportReportDTO.EntityListView.EntityListViewAllColumns.Where(x => x.RelationshipTailID == 0);
        //    foreach (var column in columns)
        //    {
        //        widthUnits += (column.WidthUnit == 0 ? 1 : column.WidthUnit);
        //    }
        //    var width = reportWidth;
        //    var perUnitWidth = width.Divide(widthUnits);
        //    var consumedWidthUnits = 0;


        //    if (ReportGroups != null)
        //        foreach (var reportGroup in ReportGroups)
        //        {
        //            ColumnSizeLocation columnSizeLocation = new ColumnSizeLocation();
        //            columnSizeLocation.LictViewColumnID = reportGroup.ListViewColumnID;
        //            SetColumnSizePosition(columnSizeLocation, reportGroup.EntityListViewColumn.WidthUnit, ref consumedWidthUnits, perUnitWidth);
        //            result.Add(columnSizeLocation);

        //        }
        //    foreach (var column in columns)
        //    {
        //        if (!result.Any(x => x.LictViewColumnID == column.ID))
        //        {
        //            ColumnSizeLocation columnSizeLocation = new ColumnSizeLocation();
        //            columnSizeLocation.LictViewColumnID = column.ID;
        //            SetColumnSizePosition(columnSizeLocation, column.WidthUnit, ref consumedWidthUnits, perUnitWidth);
        //            result.Add(columnSizeLocation);
        //        }
        //    }
        //    return result;
        //}
        //private void SetColumnSizePosition(ColumnSizeLocation columnSizeLocation, int currentWidthUnits, ref int consumedWidthUnits, Unit perUnitWidth)
        //{
        //    if (currentWidthUnits == 0)
        //        currentWidthUnits = 1;

        //    var width = currentWidthUnits * perUnitWidth;
        //    columnSizeLocation.Width = width;

        //    var xlocation = (reportWidth - width) - consumedWidthUnits * perUnitWidth;
        //    columnSizeLocation.XLocation = xlocation;


        //    consumedWidthUnits += currentWidthUnits;

        //}
        private Tuple <Report, Graph> SetReportDetails(Report report)
        {
            var detail = new Telerik.Reporting.DetailSection();

            detail.Height = Telerik.Reporting.Drawing.Unit.Cm(0.5);
            detail.Name   = "detail";

            ReportStyles.SetReportDetailStyle(detail.Style);
            report.Items.Add(detail);


            var graph = new Graph();

            graph.Width  = reportWidth;
            graph.Height = report.PageSettings.PaperSize.Height / 2;
            //reportWidth = report.Width;
            detail.Items.Add(graph);

            graph.Legend.Width            = Unit.Cm(3);
            graph.Legend.Style.LineColor  = System.Drawing.Color.LightGray;
            graph.Legend.Style.LineWidth  = Telerik.Reporting.Drawing.Unit.Inch(0D);
            graph.PlotAreaStyle.LineColor = System.Drawing.Color.LightGray;
            graph.PlotAreaStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Inch(0D);
            //graph.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(6D), Telerik.Reporting.Drawing.Unit.Inch(3D));

            GraphAxis categoryAxis = new GraphAxis();

            categoryAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MinorGridLineStyle.Visible   = false;
            categoryAxis.Scale = new CategoryScale();

            GraphAxis valueAxis = new GraphAxis();

            valueAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MinorGridLineStyle.Visible   = false;
            valueAxis.Scale = new NumericalScale();

            var cartesianCoordinateSystem1 = new CartesianCoordinateSystem();

            cartesianCoordinateSystem1.Name  = "cartesianCoordinateSystem1";
            cartesianCoordinateSystem1.XAxis = categoryAxis;
            cartesianCoordinateSystem1.YAxis = valueAxis;
            graph.CoordinateSystems.Add(cartesianCoordinateSystem1);

            var categoryColumn = ChartReportReportDTO.EntityChartReportCategories.First();
            var categoryGroup  = new GraphGroup();

            categoryGroup.Name = categoryColumn.EntityListViewColumn.RelativeColumnName;
            categoryGroup.Groupings.Add(new Grouping(string.Format("= Fields.{0}", categoryColumn.EntityListViewColumn.RelativeColumnName)));
            categoryGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", categoryColumn.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
            graph.CategoryGroups.Add(categoryGroup);

            foreach (var column in ChartReportReportDTO.EntityChartReportSeries)
            {
                foreach (var valuecolumn in ChartReportReportDTO.EntityChartReportValues)
                {
                    var barSeries = new Telerik.Reporting.BarSeries();
                    //if (column.EntityListViewColumnID == categoryColumn.EntityListViewColumnID)
                    //    barSeries.ArrangeMode = GraphSeriesArrangeMode.Overlapped;
                    //else
                    //{
                    if (column.ArrangeType == ChartSerieArrangeType.Clustered)
                    {
                        barSeries.ArrangeMode = GraphSeriesArrangeMode.Clustered;
                    }
                    else if (column.ArrangeType == ChartSerieArrangeType.Overlapped)
                    {
                        barSeries.ArrangeMode = GraphSeriesArrangeMode.Overlapped;
                    }
                    else if (column.ArrangeType == ChartSerieArrangeType.Stacked)
                    {
                        barSeries.ArrangeMode = GraphSeriesArrangeMode.Stacked;
                    }
                    else if (column.ArrangeType == ChartSerieArrangeType.Stacked100)
                    {
                        barSeries.ArrangeMode = GraphSeriesArrangeMode.Stacked100;
                    }
                    //}

                    barSeries.ToolTip.Text  = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
                    barSeries.ToolTip.Title = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);
                    barSeries.Y             = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);



                    //categoryGroup.Groupings.Add(new Telerik.Reporting.Grouping());
                    //ChartSeries

                    var serieGroup = new GraphGroup();
                    serieGroup.Name = column.EntityListViewColumn.RelativeColumnName;
                    serieGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName)));
                    serieGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
                    graph.SeriesGroups.Add(serieGroup);

                    barSeries.SeriesGroup   = serieGroup;
                    barSeries.CategoryGroup = categoryGroup;

                    barSeries.CoordinateSystem            = cartesianCoordinateSystem1;
                    barSeries.DataPointLabel              = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
                    barSeries.DataPointLabelStyle.Visible = true;
                    barSeries.DataPointStyle.LineWidth    = Telerik.Reporting.Drawing.Unit.Cm(0);
                    barSeries.DataPointStyle.Visible      = true;
                    barSeries.LegendItem.Value            = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);

                    graph.Series.Add(barSeries);
                }
            }

            return(new Tuple <Report, Graph>(report, graph));
        }
        private void SetGroupHeader(Report report, List <ColumnSizeLocation> columnsSizeLocation)
        {
            var groupHeader = new GroupHeaderSection();

            groupHeader.Height           = Unit.Mm(7);
            groupHeader.PrintOnEveryPage = true;
            groupHeader.Name             = "groupHeader";
            ReportStyles.SetGeoupColumnHeaderStyle(groupHeader.Style, ReportLevel);
            report.Items.Add(groupHeader);

            var columns = ListReportReportDTO.EntityListView.EntityListViewAllColumns;
            //  var columnHeight = groupHeader.Height;

            //گروه عناوین همه ستونها
            int index = 0;

            foreach (var column in columns)
            {
                var columnTextbox = new TextBox();
                columnTextbox.CanGrow = true;
                columnTextbox.Name    = column.Column.Name;
                ReportStyles.SetColumnHeaderTextboxStyle(columnTextbox.Style);
                var columnSizeLocation = columnsSizeLocation.First(x => x.LictViewColumnID == column.ID);
                columnTextbox.Width    = columnSizeLocation.Width;
                columnTextbox.Location = new PointU(columnSizeLocation.XLocation, Unit.Cm(0));
                columnTextbox.Height   = groupHeader.Height;
                var alias = column.Alias;
                if (string.IsNullOrEmpty(alias))
                {
                    alias = column.Column.Alias;
                }
                columnTextbox.Value = alias;
                groupHeader.Items.Add(columnTextbox);
                index++;
            }

            var group = new Group();

            group.GroupHeader = groupHeader;
            report.Groups.Add(group);


            if (ListReportReportDTO.ReportGroups != null)
            {
                foreach (var reportGroup in ListReportReportDTO.ReportGroups)
                {
                    var repotGroupHeader = new GroupHeaderSection();
                    repotGroupHeader.Height = Unit.Mm(7);
                    //repotGroupHeader.PrintOnEveryPage = true;
                    repotGroupHeader.Name = "reportgroupHeader";
                    ReportStyles.SetGeoupHeaderStyle(repotGroupHeader.Style);
                    report.Items.Add(groupHeader);

                    var geoupHeaderTextbox = new TextBox();
                    geoupHeaderTextbox.CanGrow = true;
                    geoupHeaderTextbox.Name    = reportGroup.ColumnName;
                    ReportStyles.SetGroupHeaderTextboxStyle(geoupHeaderTextbox.Style);
                    var columnSizeLocation = columnsSizeLocation.First(x => x.LictViewColumnID == reportGroup.ListViewColumnID);
                    geoupHeaderTextbox.Width    = columnSizeLocation.Width;
                    geoupHeaderTextbox.Location = new PointU(columnSizeLocation.XLocation, Unit.Cm(0));
                    geoupHeaderTextbox.Height   = repotGroupHeader.Height;

                    var columnName = reportGroup.EntityListViewColumn.RelativeColumnName;
                    //if (reportGroup.EntityListViewColumn.RelationshipTailID == 0)
                    //{
                    //    columnName = reportGroup.EntityListViewColumn.Column.Name + "0";// + "'";

                    //}
                    //else
                    //{

                    //}

                    geoupHeaderTextbox.Value = string.Format("= Fields.{0}", columnName);
                    repotGroupHeader.Items.Add(geoupHeaderTextbox);

                    var newGroup = new Group();
                    newGroup.GroupHeader = repotGroupHeader;
                    newGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", columnName)));
                    report.Groups.Add(newGroup);
                }
            }
        }
        private void SetReportDetails(DR_Requester requester, Report report, List <ColumnSizeLocation> columnsSizeLocation)
        {
            bool hasSub = ListReportReportDTO.EntityListReportSubs.Any();

            var detail = new Telerik.Reporting.DetailSection();

            detail.Height = Telerik.Reporting.Drawing.Unit.Cm(0.5);
            detail.Name   = "detail";

            ReportStyles.SetReportDetailStyle(detail.Style);
            report.Items.Add(detail);


            Panel panel = new Panel();

            panel.Width = reportWidth;
            ReportStyles.SetDetailPanelStyle(panel.Style, hasSub);
            detail.Items.Add(panel);
            //سکوریتی بروی ستوها اعمال شود
            var columns = ListReportReportDTO.EntityListView.EntityListViewAllColumns;

            int index = 0;

            foreach (var column in columns)
            {
                if (ListReportReportDTO.ReportGroups != null)
                {
                    if (ListReportReportDTO.ReportGroups.Any(x => x.ListViewColumnID == column.ID))
                    {
                        continue;
                    }
                }
                var columnTextbox = new TextBox();
                columnTextbox.CanGrow = false;

                columnTextbox.Name = column.Column.Name;
                ReportStyles.SetDetailTextboxStyle(columnTextbox.Style);
                var columnSizeLocation = columnsSizeLocation.First(x => x.LictViewColumnID == column.ID);
                columnTextbox.Width    = columnSizeLocation.Width;
                columnTextbox.Location = new PointU(columnSizeLocation.XLocation - Unit.Cm(0.0), Unit.Cm(0));
                columnTextbox.Height   = detail.Height;
                //var columnName = "";
                //if (column.RelationshipTailID == 0)
                //{
                //    columnName = column.Column.Name + "0";// + "'";

                //}
                //else
                //{

                //}
                columnTextbox.Value = string.Format("= Fields.{0}", column.RelativeColumnName);
                panel.Items.Add(columnTextbox);
                index++;
            }
            int subIndex = 0;

            foreach (var subDTO in ListReportReportDTO.EntityListReportSubs)
            {
                if (CheckSubReportIsRepeated(subDTO))
                {
                    continue;
                }
                SubReport subReport = new SubReport();
                subReport.Width = reportWidth;
                subReport.Top   = detail.Height + Unit.Cm(subIndex * 0.5);
                subIndex++;


                RR_ReportSourceRequest newrequest = new RR_ReportSourceRequest(Request.Requester);
                newrequest.Identity = Request.Identity;
                newrequest.Name     = Request.Name;
                var tail = bizEntityRelationshipTail.GetEntityRelationshipTail(requester, subDTO.EntityRelationshipTailID);
                newrequest.SearchDataItems = new DP_SearchRepository(tail.TargetEntityID);

                var entityListReport = bizEntityListReport.GetEntityListReport(requester, subDTO.EntityListReportID, true);
                newrequest.ReportID = entityListReport.ID;
                Unit SubReportWidth = reportWidth - Unit.Cm(1);
                //    var relationshipTail = bizEntityRelationshipTail.GetEntityRelationshipTail(subDTO.EntityRelationshipTailID);

                ListReportResolver listReportResolver = new ListReportResolver(entityListReport, newrequest, SubReportWidth, this, subDTO, ReportLevel + 1);
                var subListReportSource = listReportResolver.GetListReport(requester);
                subReport.ReportSource = subListReportSource;
                subReport.Left         = Unit.Cm(0.5);

                ReportStyles.SetSubreportStyle(subReport.Style);


                foreach (var relColumn in subDTO.SubsColumnsDTO)
                {
                    var parameter = new Parameter();
                    parameter.Name  = relColumn.ParentEntityListViewColumnRelativeName;
                    parameter.Value = string.Format("= Fields.{0}", relColumn.ParentEntityListViewColumnRelativeName);
                    subReport.Parameters.Add(parameter);
                }


                detail.Items.Add(subReport);
            }
        }
        private Tuple <Report, Crosstab> SetReportDetails(Report report)
        {
            var detail = new Telerik.Reporting.DetailSection();

            detail.Name = "detail";
            ReportStyles.SetReportDetailStyle(detail.Style);
            report.Items.Add(detail);

            var columnWidth  = Unit.Cm(2);
            var columnHeight = Unit.Cm(0.7);
            var crosstab     = new Crosstab();

            crosstab.Width = reportWidth;
            crosstab.Name  = "crosstab";
            // crosstab.Height = report.PageSettings.PaperSize.Height / 2;
            detail.Items.Add(crosstab);



            for (int c = 0; c <= CrosstabReportReportDTO.Columns.Count - 1; c++)
            {
                foreach (var val in CrosstabReportReportDTO.Values)
                {
                    crosstab.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(Telerik.Reporting.Drawing.Unit.Cm(2)));
                }
            }
            foreach (var val in CrosstabReportReportDTO.Values)
            {
                crosstab.Body.Columns.Add(new Telerik.Reporting.TableBodyColumn(Telerik.Reporting.Drawing.Unit.Cm(2)));
            }
            for (int r = 0; r <= CrosstabReportReportDTO.Rows.Count; r++)
            {
                crosstab.Body.Rows.Add(new Telerik.Reporting.TableBodyRow(Telerik.Reporting.Drawing.Unit.Cm(1)));
            }
            for (int c = 0; c <= crosstab.Body.Columns.Count - 1; c++)
            {
                for (int r = 0; r <= crosstab.Body.Rows.Count - 1; r++)
                {
                    var mod = c % CrosstabReportReportDTO.Values.Count;
                    Telerik.Reporting.TextBox textbox = new TextBox();
                    var val = CrosstabReportReportDTO.Values[mod];
                    textbox.Name   = val.EntityListViewColumn.Alias + c.ToString() + r.ToString();
                    textbox.Width  = columnWidth;
                    textbox.Height = columnHeight;
                    textbox.Value  = string.Format("= {0}(Fields.{1})", val.ValueFunction.ToString(), val.EntityListViewColumn.RelativeColumnName);
                    crosstab.Items.Add(textbox);
                    crosstab.Body.SetCellContent(r, c, textbox);
                    if (r == crosstab.Body.Rows.Count - 1)
                    {
                        ReportStyles.SetCrossTabRowHeader(textbox.Style);
                    }
                    else
                    {
                        if (c >= crosstab.Body.Columns.Count - CrosstabReportReportDTO.Values.Count)
                        {
                            ReportStyles.SetCrossTabRowHeader(textbox.Style);
                        }
                        else
                        {
                            if (c > CrosstabReportReportDTO.Values.Count - 1)
                            {
                                ReportStyles.SetCrossTabTotalRowColumnStyle(textbox.Style);
                            }
                            else
                            {
                                if (r > 0)
                                {
                                    ReportStyles.SetCrossTabTotalRowColumnStyle(textbox.Style);
                                }
                                else
                                {
                                    ReportStyles.SetCrossTabBodyTextboxStyle(textbox.Style);
                                }
                            }
                        }
                    }
                }
            }


            if (CrosstabReportReportDTO.Values.Count == 1)
            {
                for (int r = 0; r <= CrosstabReportReportDTO.Rows.Count - 1; r++)
                {
                    var textboxCorner = new TextBox();
                    textboxCorner.Name   = "corner" + r;
                    textboxCorner.Width  = columnWidth;
                    textboxCorner.Height = columnHeight;
                    textboxCorner.Value  = CrosstabReportReportDTO.Rows[r].EntityListViewColumn.Alias;
                    ReportStyles.SetCrossTabRowHeader(textboxCorner.Style);
                    var rowspan = CrosstabReportReportDTO.Columns.Count;
                    crosstab.Items.Add(textboxCorner);
                    crosstab.Corner.SetCellContent(0, r, textboxCorner, rowspan, 1);
                }
            }
            else
            {
                var emptytextboxCorner = new TextBox();
                emptytextboxCorner.Name   = "corner";
                emptytextboxCorner.Width  = columnWidth;
                emptytextboxCorner.Height = columnHeight;
                emptytextboxCorner.Value  = "";
                ReportStyles.SetCrossTabEmptyCornerTextboxStyle(emptytextboxCorner.Style);
                crosstab.Items.Add(emptytextboxCorner);
                crosstab.Corner.SetCellContent(0, 0, emptytextboxCorner, CrosstabReportReportDTO.Columns.Count, CrosstabReportReportDTO.Rows.Count);

                for (int r = 0; r <= CrosstabReportReportDTO.Rows.Count - 1; r++)
                {
                    var textboxCorner = new TextBox();
                    textboxCorner.Name   = "corner" + r;
                    textboxCorner.Width  = columnWidth;
                    textboxCorner.Height = columnHeight;
                    textboxCorner.Value  = CrosstabReportReportDTO.Rows[r].EntityListViewColumn.Alias;
                    ReportStyles.SetCrossTabRowHeader(textboxCorner.Style);
                    crosstab.Items.Add(textboxCorner);
                    crosstab.Corner.SetCellContent(CrosstabReportReportDTO.Columns.Count, r, textboxCorner);
                }
            }



            TableGroup prevDataTableGroup  = null;
            TableGroup prevTotalTableGroup = null;

            foreach (var item in CrosstabReportReportDTO.Columns.OrderByDescending(x => x.ID))
            {
                var newDataTableGroup = new TableGroup();
                newDataTableGroup.Name = "col" + item.EntityListViewColumn.Alias;
                newDataTableGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName)));
                newDataTableGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
                var textbox = new TextBox();
                textbox.Name  = "colt" + item.EntityListViewColumn.Alias;
                textbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                textbox.Value = string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName);
                ReportStyles.SetCrossTabRowColumnStyle(textbox.Style);
                crosstab.Items.Add(textbox);
                newDataTableGroup.ReportItem = textbox;

                var newTotalTableGroup = new TableGroup();
                newTotalTableGroup.Name = "total_col_" + item.EntityListViewColumn.Alias;
                var totaltextbox = new TextBox();
                totaltextbox.Name  = "coltotal" + item.EntityListViewColumn.Alias;
                totaltextbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                totaltextbox.Value = "جمع";
                ReportStyles.SetCrossTabRowHeader(totaltextbox.Style);
                crosstab.Items.Add(totaltextbox);
                newTotalTableGroup.ReportItem = totaltextbox;



                if (prevDataTableGroup != null)
                {
                    newDataTableGroup.ChildGroups.Add(prevDataTableGroup);
                    newDataTableGroup.ChildGroups.Add(prevTotalTableGroup);
                }
                else if (CrosstabReportReportDTO.Values.Count > 1)
                {
                    //اولین گروهبندی..جزئی ترین..اگر مقادیر بیشتر از یکی باشند یک زیر گروه جدید برای هر مقدار ایجاد میشود
                    var index = 0;
                    foreach (var val in CrosstabReportReportDTO.Values)
                    {
                        var lastDataTableGroup = new TableGroup();
                        lastDataTableGroup.Name = "last" + val.EntityListViewColumn.Alias + index;
                        var lasttextbox = new TextBox();
                        lasttextbox.Name  = "lastTextbox" + val.EntityListViewColumn.Alias + index;
                        lasttextbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                        lasttextbox.Value = val.EntityListViewColumn.Alias;
                        ReportStyles.SetCrossTabRowHeader(lasttextbox.Style);
                        crosstab.Items.Add(lasttextbox);
                        lastDataTableGroup.ReportItem = lasttextbox;
                        newDataTableGroup.ChildGroups.Add(lastDataTableGroup);
                        index++;
                    }
                }



                if (prevDataTableGroup != null)
                {
                    var index = 0;
                    foreach (var val in CrosstabReportReportDTO.Values)
                    {
                        var lastTotalDataTableGroup = new TableGroup();
                        lastTotalDataTableGroup.Name = "lasttotal" + item.EntityListViewColumn.Alias + val.EntityListViewColumn.Alias + index;
                        var lasttotaltextbox = new TextBox();
                        lasttotaltextbox.Name  = "lasttotalTextbox" + item.EntityListViewColumn.Alias + val.EntityListViewColumn.Alias + index;
                        lasttotaltextbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                        lasttotaltextbox.Value = val.EntityListViewColumn.Alias;
                        ReportStyles.SetCrossTabRowHeader(lasttotaltextbox.Style);
                        crosstab.Items.Add(lasttotaltextbox);
                        lastTotalDataTableGroup.ReportItem = lasttotaltextbox;
                        newTotalTableGroup.ChildGroups.Add(lastTotalDataTableGroup);
                        index++;
                    }
                }
                else if (CrosstabReportReportDTO.Values.Count > 1)
                {
                    //اولین گروهبندی تجمیعی..جزئی ترین..اگر مقادیر بیشتر از یکی باشند یک زیر گروه جدید برای هر مقدار ایجاد میشود
                    var index = 0;
                    foreach (var val in CrosstabReportReportDTO.Values)
                    {
                        var smallestGroup = new TableGroup();
                        smallestGroup.Name = "lasttotal" + item.EntityListViewColumn.Alias + val.EntityListViewColumn.Alias + index;
                        var lasttotaltextbox = new TextBox();
                        lasttotaltextbox.Name  = "lasttotalTextbox" + item.EntityListViewColumn.Alias + val.EntityListViewColumn.Alias + index;
                        lasttotaltextbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                        lasttotaltextbox.Value = val.EntityListViewColumn.Alias;
                        ReportStyles.SetCrossTabRowHeader(lasttotaltextbox.Style);
                        crosstab.Items.Add(lasttotaltextbox);
                        smallestGroup.ReportItem = lasttotaltextbox;
                        newTotalTableGroup.ChildGroups.Add(smallestGroup);


                        index++;
                    }
                }



                prevDataTableGroup  = newDataTableGroup;
                prevTotalTableGroup = newTotalTableGroup;
            }
            crosstab.ColumnGroups.Add(prevDataTableGroup);
            crosstab.ColumnGroups.Add(prevTotalTableGroup);


            TableGroup prevRowDataTableGroup  = null;
            TableGroup prevRowTotalTableGroup = null;

            foreach (var item in CrosstabReportReportDTO.Rows.OrderByDescending(x => x.ID))
            {
                var newDataTableGroup = new TableGroup();
                newDataTableGroup.Name = "row" + item.EntityListViewColumn.Alias;
                if (prevRowDataTableGroup != null)
                {
                    newDataTableGroup.ChildGroups.Add(prevRowDataTableGroup);
                    newDataTableGroup.ChildGroups.Add(prevRowTotalTableGroup);
                }
                var textbox = new TextBox();
                textbox.Value = string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName);
                textbox.Name  = "rowt" + item.EntityListViewColumn.Alias;
                textbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                crosstab.Items.Add(textbox);
                ReportStyles.SetCrossTabRowColumnStyle(textbox.Style);
                newDataTableGroup.ReportItem = textbox;
                newDataTableGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName)));
                newDataTableGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", item.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));


                var newTotalTableGroup = new TableGroup();
                newTotalTableGroup.Name = "total_row_" + item.EntityListViewColumn.Alias;
                var totaltextbox = new TextBox();
                totaltextbox.Name  = "totalrow" + item.EntityListViewColumn.Alias;
                totaltextbox.Size  = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(0.800000011920929D), Telerik.Reporting.Drawing.Unit.Inch(0.20000000298023224D));
                totaltextbox.Value = "جمع";
                ReportStyles.SetCrossTabRowHeader(totaltextbox.Style);
                crosstab.Items.Add(totaltextbox);
                newTotalTableGroup.ReportItem = totaltextbox;



                prevRowDataTableGroup  = newDataTableGroup;
                prevRowTotalTableGroup = newTotalTableGroup;
            }
            crosstab.RowGroups.Add(prevRowDataTableGroup);
            crosstab.RowGroups.Add(prevRowTotalTableGroup);
            return(new Tuple <Report, Crosstab>(report, crosstab));
        }
Beispiel #7
0
        private Tuple <Report, Graph> SetReportDetails(Report report)
        {
            var detail = new Telerik.Reporting.DetailSection();

            detail.Height = Telerik.Reporting.Drawing.Unit.Cm(0.5);
            detail.Name   = "detail";

            ReportStyles.SetReportDetailStyle(detail.Style);
            report.Items.Add(detail);


            var graph = new Graph();

            graph.Name   = "graph1";
            graph.Width  = reportWidth;
            graph.Height = report.PageSettings.PaperSize.Height / 2;
            //reportWidth = report.Width;
            detail.Items.Add(graph);

            graph.Legend.Width            = Unit.Cm(5);
            graph.Legend.Style.LineColor  = System.Drawing.Color.LightGray;
            graph.Legend.Style.LineWidth  = Telerik.Reporting.Drawing.Unit.Inch(0D);
            graph.PlotAreaStyle.LineColor = System.Drawing.Color.LightGray;
            graph.PlotAreaStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Inch(0D);
            //graph.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(6D), Telerik.Reporting.Drawing.Unit.Inch(3D));


            CategoryScale categoryScale1 = new CategoryScale();

            categoryScale1.PositionMode     = Telerik.Reporting.AxisPositionMode.OnTicks;
            categoryScale1.SpacingSlotCount = 0D;

            GraphAxis categoryAxis = new GraphAxis();
            GraphAxis valueAxis    = new GraphAxis();

            var polarCoordinateSystem = new PolarCoordinateSystem();

            polarCoordinateSystem.AngularAxis = valueAxis;
            polarCoordinateSystem.RadialAxis  = categoryAxis;
            graph.CoordinateSystems.Add(polarCoordinateSystem);



            categoryAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MajorGridLineStyle.Visible   = false;
            categoryAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MinorGridLineStyle.Visible   = false;
            categoryAxis.Name               = "graphAxis2";
            categoryScale1.PositionMode     = Telerik.Reporting.AxisPositionMode.OnTicks;
            categoryScale1.SpacingSlotCount = 0D;
            categoryAxis.Scale              = categoryScale1;
            categoryAxis.Style.Visible      = false;


            valueAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MajorGridLineStyle.Visible   = false;
            valueAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MinorGridLineStyle.Visible   = false;
            valueAxis.Name          = "graphAxis1";
            valueAxis.Scale         = new NumericalScale();;
            valueAxis.Style.Visible = false;



            var valuecolumn = ChartReportReportDTO.EntityChartReportValues.First();


            var categoryGroup = new GraphGroup();

            //categoryGroup.Groupings.Add(new Grouping());
            graph.CategoryGroups.Add(categoryGroup);


            //if(ChartReportReportDTO.EntityChartReportSeries.Count>0)
            //{

            //}

            var column = ChartReportReportDTO.EntityChartReportSeries.First();



            var barSeries = new Telerik.Reporting.BarSeries();

            graph.Series.Add(barSeries);
            barSeries.Name          = column.EntityListViewColumn.RelativeColumnName;
            barSeries.CategoryGroup = categoryGroup;

            barSeries.ToolTip.Text = string.Format("= Format('{0}', {1}(Fields.{2}) / CDbl(Exec(\'graph1\', {1}(Fields.{2}))))", "{0:P}", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);

            barSeries.X = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);

            var serieGroup = new GraphGroup();

            barSeries.SeriesGroup = serieGroup;
            //اگر نام ست نشده باشد گزارش درست کار نمیکند!!!!؟
            serieGroup.Name = column.EntityListViewColumn.RelativeColumnName;
            serieGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName)));
            serieGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
            graph.SeriesGroups.Add(serieGroup);



            //رو بقیه انواع خطا میدهد!اشکال تلریک هست در ورژن جدیدتر چک شود
            //شاید هم چون اصلا کتگوری ندارد و فقط سری دارد قانونش همینه
            barSeries.ArrangeMode             = Telerik.Reporting.GraphSeriesArrangeMode.Stacked100;
            barSeries.CoordinateSystem        = polarCoordinateSystem;
            barSeries.DataPointLabel          = string.Format("= {0}(Fields.{1}) / CDbl(Exec(\'graph1\', {0}(Fields.{1})))", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
            barSeries.DataPointLabelAlignment = Telerik.Reporting.BarDataPointLabelAlignment.OutsideColumn;
            barSeries.DataPointLabelConnectorStyle.Padding.Bottom = Telerik.Reporting.Drawing.Unit.Point(2D);
            barSeries.DataPointLabelConnectorStyle.Padding.Top    = Telerik.Reporting.Drawing.Unit.Point(2D);
            barSeries.DataPointLabelFormat        = "{0:P}";
            barSeries.DataPointLabelOffset        = Telerik.Reporting.Drawing.Unit.Mm(5D);
            barSeries.DataPointLabelStyle.Visible = true;
            barSeries.DataPointStyle.LineWidth    = Telerik.Reporting.Drawing.Unit.Inch(0D);
            barSeries.DataPointStyle.Visible      = true;
            barSeries.LegendItem.Value            = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);

            var legendValue = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);
            var parentGeoup = serieGroup;

            foreach (var cColumn in ChartReportReportDTO.EntityChartReportSeries.Where(x => x != column))
            {
                var newGroup = new GraphGroup();
                newGroup.Name = column.EntityListViewColumn.RelativeColumnName;
                newGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName)));
                newGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
                parentGeoup.ChildGroups.Add(newGroup);
                barSeries.SeriesGroup = newGroup;
                parentGeoup           = newGroup;
                legendValue          += "+ \'/\' +" + string.Format(" Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName);
            }

            barSeries.LegendItem.Value = legendValue;
            barSeries.ToolTip.Title    = legendValue;

            return(new Tuple <Report, Graph>(report, graph));
        }
Beispiel #8
0
        //private List<ColumnSizeLocation> GetColumnsSizeLocation()
        //{
        //    List<ColumnSizeLocation> result = new List<ColumnSizeLocation>();

        //    int widthUnits = 0;
        //    var columns = ChartReportReportDTO.EntityListView.EntityListViewAllColumns.Where(x => x.RelationshipTailID == 0);
        //    foreach (var column in columns)
        //    {
        //        widthUnits += (column.WidthUnit == 0 ? 1 : column.WidthUnit);
        //    }
        //    var width = reportWidth;
        //    var perUnitWidth = width.Divide(widthUnits);
        //    var consumedWidthUnits = 0;


        //    if (ReportGroups != null)
        //        foreach (var reportGroup in ReportGroups)
        //        {
        //            ColumnSizeLocation columnSizeLocation = new ColumnSizeLocation();
        //            columnSizeLocation.LictViewColumnID = reportGroup.ListViewColumnID;
        //            SetColumnSizePosition(columnSizeLocation, reportGroup.EntityListViewColumn.WidthUnit, ref consumedWidthUnits, perUnitWidth);
        //            result.Add(columnSizeLocation);

        //        }
        //    foreach (var column in columns)
        //    {
        //        if (!result.Any(x => x.LictViewColumnID == column.ID))
        //        {
        //            ColumnSizeLocation columnSizeLocation = new ColumnSizeLocation();
        //            columnSizeLocation.LictViewColumnID = column.ID;
        //            SetColumnSizePosition(columnSizeLocation, column.WidthUnit, ref consumedWidthUnits, perUnitWidth);
        //            result.Add(columnSizeLocation);
        //        }
        //    }
        //    return result;
        //}
        //private void SetColumnSizePosition(ColumnSizeLocation columnSizeLocation, int currentWidthUnits, ref int consumedWidthUnits, Unit perUnitWidth)
        //{
        //    if (currentWidthUnits == 0)
        //        currentWidthUnits = 1;

        //    var width = currentWidthUnits * perUnitWidth;
        //    columnSizeLocation.Width = width;

        //    var xlocation = (reportWidth - width) - consumedWidthUnits * perUnitWidth;
        //    columnSizeLocation.XLocation = xlocation;


        //    consumedWidthUnits += currentWidthUnits;

        //}

        //   private Telerik.Reporting.DetailSection detailSection1;
        // private Telerik.Reporting.Graph graph1;
        //private Telerik.Reporting.PolarCoordinateSystem polarCoordinateSystem1;
        //private Telerik.Reporting.GraphAxis graphAxis1;
        //private Telerik.Reporting.GraphAxis graphAxis2;

        //private Telerik.Reporting.BarSeries barSeries1;

        private Tuple <Report, Graph> SetReportDetails(Report report)
        {
            var detail = new Telerik.Reporting.DetailSection();

            //detail.Height = Telerik.Reporting.Drawing.Unit.Cm(0.5);
            detail.Name = "detail";

            ReportStyles.SetReportDetailStyle(detail.Style);
            report.Items.Add(detail);


            var graph = new Graph();

            graph.Name   = "graph1";
            graph.Width  = reportWidth;
            graph.Height = report.PageSettings.PaperSize.Height / 2;
            //reportWidth = report.Width;
            detail.Items.Add(graph);

            graph.Legend.Width            = Unit.Cm(4);
            graph.Legend.Style.LineColor  = System.Drawing.Color.LightGray;
            graph.Legend.Style.LineWidth  = Telerik.Reporting.Drawing.Unit.Inch(0D);
            graph.PlotAreaStyle.LineColor = System.Drawing.Color.LightGray;
            graph.PlotAreaStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Inch(0D);
            //graph.Size = new Telerik.Reporting.Drawing.SizeU(Telerik.Reporting.Drawing.Unit.Inch(6D), Telerik.Reporting.Drawing.Unit.Inch(3D));



            GraphAxis categoryAxis = new GraphAxis();
            GraphAxis valueAxis    = new GraphAxis();



            CategoryScale categoryScale1 = new CategoryScale();

            categoryAxis.LabelPlacement = Telerik.Reporting.GraphAxisLabelPlacement.AtMaximum;
            categoryAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MajorGridLineStyle.Visible   = true;
            categoryAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            categoryAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            categoryAxis.MinorGridLineStyle.Visible   = false;
            categoryAxis.Name = "categoryAxis";
            //categoryScale1.PositionMode = Telerik.Reporting.AxisPositionMode.OnTicks;
            categoryScale1.SpacingSlotCount = 0.1D;
            categoryAxis.Style.LineWidth    = Telerik.Reporting.Drawing.Unit.Inch(0D);
            categoryAxis.Scale         = categoryScale1;
            categoryAxis.Style.Visible = true;


            valueAxis.LabelAngle = 90;
            valueAxis.MajorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MajorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MajorGridLineStyle.Visible   = true;
            valueAxis.MinorGridLineStyle.LineColor = System.Drawing.Color.LightGray;
            valueAxis.MinorGridLineStyle.LineWidth = Telerik.Reporting.Drawing.Unit.Pixel(1D);
            valueAxis.MinorGridLineStyle.Visible   = false;
            valueAxis.Name = "valueAxis";
            NumericalScaleCrossAxisPosition numericalScaleCrossAxisPosition1 = new NumericalScaleCrossAxisPosition();

            numericalScaleCrossAxisPosition1.Position = Telerik.Reporting.GraphScaleCrossAxisPosition.AtMinimum;
            numericalScaleCrossAxisPosition1.Value    = 0D;
            NumericalScale numericalScale1 = new NumericalScale();

            numericalScale1.CrossAxisPositions.Add(numericalScaleCrossAxisPosition1);
            valueAxis.Scale = numericalScale1;
            //valueAxis.Style.Visible = false;

            var polarCoordinateSystem = new PolarCoordinateSystem();

            polarCoordinateSystem.AngularAxis = categoryAxis;
            polarCoordinateSystem.Name        = "polarCoordinateSystem1";
            polarCoordinateSystem.RadialAxis  = valueAxis;
            graph.CoordinateSystems.Add(polarCoordinateSystem);


            var valuecolumn    = ChartReportReportDTO.EntityChartReportValues.First();
            var categoryColumn = ChartReportReportDTO.EntityChartReportCategories.First();

            var categoryGroup = new GraphGroup();

            categoryGroup.Name = categoryColumn.EntityListViewColumn.RelativeColumnName;
            categoryGroup.Groupings.Add(new Grouping(string.Format("= Fields.{0}", categoryColumn.EntityListViewColumn.RelativeColumnName)));
            categoryGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", categoryColumn.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
            graph.CategoryGroups.Add(categoryGroup);


            //if(ChartReportReportDTO.EntityChartReportSeries.Count>0)
            //{

            //}

            var column = ChartReportReportDTO.EntityChartReportSeries.First();



            var barSeries = new Telerik.Reporting.BarSeries();

            barSeries.ArrangeMode = Telerik.Reporting.GraphSeriesArrangeMode.Stacked;
            graph.Series.Add(barSeries);
            barSeries.Name                        = column.EntityListViewColumn.RelativeColumnName;
            barSeries.CategoryGroup               = categoryGroup;
            barSeries.CoordinateSystem            = polarCoordinateSystem;
            barSeries.DataPointLabel              = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
            barSeries.DataPointLabelStyle.Visible = false;
            barSeries.LegendItem.Value            = "= Fields.Name";
            barSeries.Y = string.Format("= {0}(Fields.{1})+0.1", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
            barSeries.LegendItem.Value = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);


            var serieGroup = new GraphGroup();

            //اگر نام ست نشده باشد گزارش درست کار نمیکند!!!!؟
            serieGroup.Name = column.EntityListViewColumn.RelativeColumnName;
            serieGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName)));
            serieGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
            graph.SeriesGroups.Add(serieGroup);
            barSeries.SeriesGroup  = serieGroup;
            barSeries.ToolTip.Text = string.Format("= {0}(Fields.{1})", valuecolumn.FunctionType.ToString(), valuecolumn.EntityListViewColumn.RelativeColumnName);
            //    barSeries.ToolTip.Title = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);

            var legendValue = string.Format("= Fields.{0}", column.EntityListViewColumn.RelativeColumnName);
            var parentGeoup = serieGroup;

            foreach (var cColumn in ChartReportReportDTO.EntityChartReportSeries.Where(x => x != column))
            {
                var newGroup = new GraphGroup();
                newGroup.Name = cColumn.EntityListViewColumn.RelativeColumnName;
                newGroup.Groupings.Add(new Telerik.Reporting.Grouping(string.Format("= Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName)));
                newGroup.Sortings.Add(new Telerik.Reporting.Sorting(string.Format("= Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName), Telerik.Reporting.SortDirection.Asc));
                parentGeoup.ChildGroups.Add(newGroup);
                barSeries.SeriesGroup = newGroup;
                parentGeoup           = newGroup;
                legendValue          += "+ \'/\' +" + string.Format(" Fields.{0}", cColumn.EntityListViewColumn.RelativeColumnName);
            }

            barSeries.LegendItem.Value = legendValue;
            barSeries.ToolTip.Title    = legendValue;

            return(new Tuple <Report, Graph>(report, graph));
        }