FastReport获取子类  给Table赋值

FastReport获取子类  给Table赋值

查看代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;

namespace FastReport
{
  public class ReportScript
  {
    private void Page2_StartPage(object sender, EventArgs e)
    {
      DataSourceBase rowData = Report.GetDataSource("CodeList");
      if(rowData.RowCount<=50)
      {
        Page2.Visible=false;
      }
      else
      {
        Page2.Visible=true;
      }
    }

    private void _StartReport(object sender, EventArgs e)
    {
      Report rp=  sender as Report;     
      foreach (object reportchild in  rp.ChildObjects.ToArray())
      {
        if(reportchild.GetType().ToString().Contains("ReportPage"))
        {
          ReportPage page=reportchild as ReportPage;
          foreach (object pagechild in page.ChildObjects.ToArray())
          {
            if(pagechild.GetType().ToString().Contains("DataBand"))
            {
              DataBand data=pagechild as DataBand;
              foreach (object datachild in data.ChildObjects.ToArray())
              {
                if(datachild.GetType().ToString().Contains("TableObject"))
                {
                  TableObject tb=datachild as TableObject;
                  if(tb.Name.Contains("tb"))
                  {
                    tb.ManualBuild+=  new EventHandler(tb_ManualBuild);
                  }
                }
              }
            }
          }
        }
      }
      //      tb1.ManualBuild   += new EventHandler(tb1_ManualBuild);
 
    }
    private void tb_ManualBuild(object sender, EventArgs e)
    {
      loaddata(sender as TableObject);
    }
   
                    
    #region  加载数据
    private void loaddata(TableObject tb)
    {       
      decimal sumcol=0;
      bool flg=false;
      int maxval = 11;
      int cnt=10;
      int precolumn =  0;
   
      if(tb.Name.ToString().Contains("tb"))
      {
        precolumn =  Convert.ToInt32(tb.Name.ToString().Replace("tb",""))-1;    //前面已经有的列数
//         MessageBox.Show(tb.Name.ToString());
      }
      DataSourceBase rowData = Report.GetDataSource("CodeList");
      int datacnt=rowData.RowCount;
      
      rowData.Init();
      int i = 0;
      for(int k=0;k<1;k++)
      {
        tb.PrintRow(k);
        tb.PrintColumns();
      }
      i = 1;
      int j = 0;
      while (rowData.HasMoreRows)
      {
        if (i == maxval - precolumn + precolumn)
          break;
        // print the table body  
        if (j >= precolumn * maxval - precolumn)
        {
          tb.PrintRow(i);
          tb.PrintColumns();                    
          sumcol += Convert.ToDecimal(string.IsNullOrEmpty(rowData[rowData.Columns[5]].ToString()) ? "0" : rowData[rowData.Columns[5]].ToString());
          i++;
        }
        rowData.Next();
        j++;
      }

      if (i <= maxval)
      {
        for (; i <= maxval; i++)
        {

          if (i == maxval)
          {
            tb.PrintRow(i);
            tb.Rows[i][0].Text = "小计";
            tb.Rows[i][1].Text = sumcol.ToString();
            tb.PrintColumns();
          }
          else
          {

            tb.PrintRow(i);
            tb.Rows[i][0].Text = "";
            tb.Rows[i][1].Text = "";
            tb.PrintColumns();
          }
        }
      }  
      
    }
    #endregion
    
  }
}

附件:https:/www.aliyundrive.com/s/1eWh7YdN8ih

posted on 2022-12-01 10:29  RookieBoy666  阅读(144)  评论(0编辑  收藏  举报