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.##’); }