do caculation on every row in databand

hi 

this my code in fastreport.net to do some calculation for every row in databand on each page

of PreparedPages but it only works for the first row.

it would be a great help and very kind of you to rewrite my code.


public void CalculateSaalScore2()

  {

   double calc = 0;

   FastReport.Preview.PreparedPages pages = Report.PreparedPages;

   ReportPage P = pages.GetPage(Report.Preview.PageNo - 1);

   var dataBand = Report.FindObject("Data3") as DataBand;

   var dataSource = dataBand.DataSource; 

   for (int i = 0; i < dataSource.RowCount; i++) 

   { 

     TableCell objM1=(TableCell)dataSource.FindObject("CellM1");

     TableCell objP1=(TableCell)P.FindObject("CellP1");

     TableCell objM2=(TableCell)P.FindObject("CellM2");

     TableCell objP2=(TableCell)P.FindObject("CellP2");

     TableCell objSaalScore=(TableCell)P.FindObject("CellSaalScore");

  

     calc= (Convert.ToDouble(objM1.Text)+Convert.ToDouble(objM2.Text)+ (Convert.ToDouble(objP1.Text)*2)+ (Convert.ToDouble(objP2.Text)*4) )/8 ;

     objSaalScore.Text=calc.ToString();

    

     if(Report.Preview != null)

     {


      Report.PreparedPages.ModifyPage(Report.Preview.PageNo - 1, objM1.Page as ReportPage);

      //Refresh preview

      Report.Preview.Refresh();

     }

      

  }

Comments

  • Hello!

    To resolve your issue, you can use direct expressions within CellSaalScore:

    [(ToDouble([Data.M1]) + ToDouble([Data.M2]) + ToDouble([Data.P1]) * 2 + ToDouble([Data.P2]) * 4) / 8]

    Alternatively, you can use it in the BeforePrint event of your DataBand or table row:

    private void Data3_BeforePrint(object sender, EventArgs e)
    {
      double m1 = ToDouble(Report.GetColumnValue(‘Data.M1’));
      double m2 = ToDouble(Report.GetColumnValue(‘Data.M2’));
      double p1 = ToDouble(Report.GetColumnValue(‘Data.P1’));
      double p2 = ToDouble(Report.GetColumnValue(‘Data.P2’));
      CellSaalScore.Text = ((m1 + m2 + p1 * 2 + p2 * 4) / 8).ToString(‘0.##’);
    }
    


This discussion has been closed.