MatrixObject add new cell

HI,i want a new cell to Matrix Report,But it's Error!

please help me ?
MatrixObject mo =(MatrixObject) Report.report.FindObject("Matrix1");
MatrixCells mcs = mo.Data.Cells;

MatrixPercent mp=new MatrixPercent();
MatrixAggregateFunction mf = new MatrixAggregateFunction();

MatrixCellDescriptor mcd = new MatrixCellDescriptor("[t_FProducts_InDetails1.cDescript]" ,mf,mp);

mcs.Add(mcd );
Report.report.Prepare(); // this line Error
Report.report.ShowPrepared();

Comments

  • edited 2:09PM
                // report object
                FastReport.Report report = new FastReport.Report();
                report.RegisterData(matrixDemo, "MatrixDemo", maxNestingLevel: 1);
                
                // add report page
                FastReport.ReportPage page = new FastReport.ReportPage();
    
                // set page margin
                report.Pages.Add(page);
                page.CreateUniqueName();
                page.LeftMargin = 10;
                page.RightMargin = 10;
                page.TopMargin = 10;
                page.BottomMargin = 10;
                page.UnlimitedWidth = true;
    
                // create data band
                FastReport.DataBand dataBand = new FastReport.DataBand();
                page.Bands.Add(dataBand);
                dataBand.CreateUniqueName();
                dataBand.Height = FastReport.Utils.Units.Centimeters * 2.3f;
    
                FastReport.Matrix.MatrixObject matrix = new FastReport.Matrix.MatrixObject();
                matrix.Parent = dataBand;
                matrix.CreateUniqueName();
                matrix.Bounds = new RectangleF(FastReport.Utils.Units.Centimeters * 0.1f, FastReport.Utils.Units.Centimeters * 0.1f, FastReport.Utils.Units.Centimeters * 8f, FastReport.Utils.Units.Centimeters * 2f);
                matrix.CellsSideBySide = true;
                matrix.DataSource = report.GetDataSource("MatrixDemo");
                matrix.Style = "blue";
    
                // create one column descriptor
                FastReport.Matrix.MatrixHeaderDescriptor column = new FastReport.Matrix.MatrixHeaderDescriptor("[MatrixDemo.Year]");
                matrix.Data.Columns.Add(column);
    
                // create one row descriptor
                FastReport.Matrix.MatrixHeaderDescriptor row = new FastReport.Matrix.MatrixHeaderDescriptor("[MatrixDemo.Name]");
                matrix.Data.Rows.Add(row);
    
                // create three data cells
                FastReport.Matrix.MatrixCellDescriptor cell1 = new FastReport.Matrix.MatrixCellDescriptor("[MatrixDemo.ItemsSold]", FastReport.Matrix.MatrixAggregateFunction.Sum);
                matrix.Data.Cells.Add(cell1);
                FastReport.Matrix.MatrixCellDescriptor cell2 = new FastReport.Matrix.MatrixCellDescriptor("[MatrixDemo.Revenue]", FastReport.Matrix.MatrixAggregateFunction.Sum);
                matrix.Data.Cells.Add(cell2);
                FastReport.Matrix.MatrixCellDescriptor cell3 = new FastReport.Matrix.MatrixCellDescriptor("0", FastReport.Matrix.MatrixAggregateFunction.Sum);
                matrix.Data.Cells.Add(cell3);
    
                // build matrix template
                matrix.BuildTemplate();            
    
                // important!!! formatting is available after 'BuildTemplate'
                FastReport.Format.NumberFormat numberFormat = new FastReport.Format.NumberFormat();
                numberFormat.UseLocale = false;
                numberFormat.GroupSeparator = ",";
                numberFormat.DecimalSeparator = ".";
                numberFormat.DecimalDigits = 2;
                numberFormat.NegativePattern = 1;
    
                for (int i = 2; i < 4; i++)
                {
                    for (int j = 1; j < 7; j++)
                    {
                        matrix.Rows[i][j].Format = numberFormat;
                    }
                }
    
                // change header text
                FastReport.Table.TableCell tableCell = (FastReport.Table.TableCell)matrix.Rows[0][0];
                tableCell.Text = "Employee";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][1];
                tableCell.Text = "Qty";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][2];
                tableCell.Text = "Amount";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][3];
                tableCell.Text = "Amount / Qty";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][4];
                tableCell.Text = "Σ Qty";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][5];
                tableCell.Text = "Σ Amount";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[1][6];
                tableCell.Text = "Σ (Amount / Qty)";
    
                // autosize column
                for (int i = 0; i < 7; i++)
                {
                    matrix.Columns[i].AutoSize = true;
                }
    
                // assign an event on table cell
                tableCell = (FastReport.Table.TableCell)matrix.Rows[2][3];
                tableCell.BeforePrintEvent = "Cell18_BeforePrint";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[2][6];
                tableCell.BeforePrintEvent = "Cell21_BeforePrint";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[3][3];
                tableCell.BeforePrintEvent = "Cell25_BeforePrint";
                tableCell = (FastReport.Table.TableCell)matrix.Rows[3][6];
                tableCell.BeforePrintEvent = "Cell28_BeforePrint";
    
                report.ScriptText = @"using System;
    using FastReport;
    namespace FastReport
    {
        public class ReportScript
        {
            private void Cell18_BeforePrint(object sender, EventArgs e)
            {
                if (Cell16.Value != null && Cell17.Value != null)
                {
                    double sumQty = (double)((int)Cell16.Value);
                    double sumAmount = (double)((decimal)Cell17.Value);
                    double sumAverage = sumAmount / sumQty;
                    Cell18.Text = sumAverage.ToString(""#,##0.00"");
                }
            }
            private void Cell21_BeforePrint(object sender, EventArgs e)
            {
                if (Cell19.Value != null && Cell20.Value != null)
                {
                    double sumQty = (double)((int)Cell19.Value);
                    double sumAmount = (double)((decimal)Cell20.Value);
                    double sumAverage = sumAmount / sumQty;
                    Cell21.Text = sumAverage.ToString(""#,##0.00"");
                }
            }
            private void Cell25_BeforePrint(object sender, EventArgs e)
            {
              if (Cell23.Value != null && Cell24.Value != null)
              {
                double sumQty = (double)((int)Cell23.Value);
                double sumAmount = (double)((decimal)Cell24.Value);
                double sumAverage = sumAmount / sumQty;
                Cell25.Text = sumAverage.ToString(""#,##0.00"");
              }
            }
            private void Cell28_BeforePrint(object sender, EventArgs e)
            {
                if (Cell26.Value != null && Cell27.Value != null)
                {
                    double sumQty = (double)((int)Cell26.Value);
                    double sumAmount = (double)((decimal)Cell27.Value);
                    double sumAverage = sumAmount / sumQty;
                    Cell28.Text = sumAverage.ToString(""#,##0.00"");
                }
            }
        }
    }";
    
                // run report designer
                //report.Design();
    

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.