public void ExecuteLayoutExpression(EbReportField field)
        {
            EbPdfGlobals globals = new EbPdfGlobals
            {
                CurrentField = new PdfGReportField(field.LeftPt, field.WidthPt, field.TopPt, field.HeightPt, field.BackColor, field.ForeColor, field.IsHidden, null)
            };

            string[] _dataFieldsUsed = GetDataFieldsUsed(field.LayoutExpression.GetCode());
            object   value           = ExecuteExpression(field.LayoutExpression.GetCode(), 0, globals, _dataFieldsUsed, false);

            field.SetValuesFromGlobals(globals.CurrentField);
        }
        public void ExecuteHideExpression(EbReportField field)
        {
            EbPdfGlobals globals = new EbPdfGlobals();

            string[] _dataFieldsUsed = GetDataFieldsUsed(field.HideExpression.GetCode());
            object   value           = ExecuteExpression(field.HideExpression.GetCode(), 0, globals, _dataFieldsUsed, false);

            if (value != null)
            {
                field.IsHidden = (bool)value;
            }
        }
 public void DrawReportFooter()
 {
     RowHeight         = 0;
     MultiRowTop       = 0;
     detailprintingtop = 0;
     dt_Yposition      = ph_Yposition + PageHeaderHeight;
     //pf_Yposition = dt_Yposition + DT_FillHeight;
     pf_Yposition = (float)detailEnd /*+ DetailHeight*/ + dt_Yposition;
     if (RenderReportFooterInBottom)
     {
         rf_Yposition = HeightPt - ReportFooterHeight;
     }
     else
     {
         rf_Yposition = pf_Yposition + PageFooterHeight;
     }
     foreach (EbReportFooter r_footer in ReportFooters)
     {
         float           footer_diffrence   = 0;
         EbReportField[] SortedReportFields = this.ReportFieldsSortedPerRFooter[r_footer];
         if (SortedReportFields.Length > 0)
         {
             for (int iSortPos = 0; iSortPos < SortedReportFields.Length; iSortPos++)
             {
                 EbReportField field = SortedReportFields[iSortPos];
                 // if (HeightPt - rf_Yposition + Margin.Top < field.TopPt)
                 if (HeightPt < field.TopPt + rf_Yposition + field.HeightPt + Margin.Bottom)
                 {
                     AddNewPage();
                     //footer_diffrence = HeightPt - rf_Yposition - Margin.Bottom;
                     footer_diffrence = field.TopPt;
                     FooterDrawn      = true;
                     rf_Yposition     = Margin.Top;
                 }
                 field.TopPt -= footer_diffrence;
                 DrawFields(field, rf_Yposition, 0);
             }
         }
         rf_Yposition += r_footer.HeightPt;
     }
 }
 public void DrawFields(EbReportField field, float section_Yposition, int serialnumber)
 {
     if (!field.IsHidden)
     {
         List <Param> RowParams = null;
         if (field is EbDataField)
         {
             EbDataField field_org = field as EbDataField;
             if (GroupSummaryFields.ContainsKey(field.Name) || PageSummaryFields.ContainsKey(field.Name) || ReportSummaryFields.ContainsKey(field.Name))
             {
                 CallSummerize(field_org, serialnumber);
             }
             if (AppearanceScriptCollection.ContainsKey(field.Name))
             {
                 RunAppearanceExpression(field_org, serialnumber);
             }
             //if (!string.IsNullOrEmpty(field_org.LinkRefId))
             //    RowParams = CreateRowParamForLink(field_org, serialnumber);
         }
         field.DrawMe(section_Yposition, this, RowParams, serialnumber);
     }
 }
        public void DoLoopInDetail(int serialnumber)
        {
            ph_Yposition = (PageNumber == 1) ? ReportHeaderHeight + this.Margin.Top : this.Margin.Top;
            dt_Yposition = ph_Yposition + PageHeaderHeight;
            foreach (EbReportDetail detail in Detail)
            {
                string column_val;
                RowHeight   = 0;
                MultiRowTop = 0;
                EbDataField[] SortedList = FieldsNotSummaryPerDetail[detail];
                EbPdfGlobals  globals    = new EbPdfGlobals();
                for (int iSortPos = 0; iSortPos < SortedList.Length; iSortPos++)
                {
                    EbDataField field = SortedList[iSortPos];
                    if (field is EbCalcField)
                    {
                        //globals.CurrentField = field;
                        column_val = (field as EbCalcField).GetCalcFieldValue(globals, DataSet, serialnumber, this);
                        EbDbTypes dbtype = (EbDbTypes)((field as EbCalcField).CalcFieldIntType);

                        if (CalcValInRow.ContainsKey(field.Title))
                        {
                            CalcValInRow[field.Title] = new PdfNTV {
                                Name = field.Title, Type = (PdfEbDbTypes)(int)dbtype, Value = column_val
                            }
                        }
                        ;
                        else
                        {
                            CalcValInRow.Add(field.Title, new PdfNTV {
                                Name = field.Title, Type = (PdfEbDbTypes)(int)dbtype, Value = column_val
                            });
                        }
                        AddParamsNCalcsInGlobal(globals);
                    }
                    else
                    {
                        column_val = GetDataFieldValue(field.ColumnName, serialnumber, field.TableIndex);
                    }

                    if (field.RenderInMultiLine)
                    {
                        field.DoRenderInMultiLine(column_val, this);
                    }
                }
                EbReportField[] SortedReportFields = this.ReportFieldsSortedPerDetail[detail];
                if (SortedReportFields.Length > 0)
                {
                    for (int iSortPos = 0; iSortPos < SortedReportFields.Length; iSortPos++)
                    {
                        EbReportField field = SortedReportFields[iSortPos];
                        if (field is EbDataField)
                        {
                            field.HeightPt += RowHeight;
                        }
                        DrawFields(field, dt_Yposition, serialnumber);
                    }
                    detailprintingtop += detail.HeightPt + RowHeight;
                    detailEnd          = detailprintingtop;
                }
                else
                {
                    detailEnd  = detailprintingtop;
                    IsLastpage = true;
                    Writer.PageEvent.OnEndPage(Writer, Doc);
                    return;
                }
            }
        }