K/3Cloud 分页报表示例参考
金蝶云社区-天冥异
天冥异
4人赞赏了该文章 2945次浏览 未经作者许可,禁止转载编辑于2018年07月27日 11:20:37

分页报表首先需要实现的方法就是GetList,这个方法用来获得分页的条件。
其他的就和其他报表类似了。

  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Text;

  5. using Kingdee.BOS.Core.Report.PlugIn;

  6. using Kingdee.BOS.Core.Report;

  7. using System.Data;

  8. using Kingdee.BOS.App.Data;

  9. using Kingdee.BOS.Contracts.Report;

  10. using Kingdee.BOS.Core.CommonFilter;

  11. using Kingdee.BOS.Util;


  12. namespace Kingdee.BOS.Demo.Report

  13. {

  14.     public class DemoMoveReport : SysReportBaseService

  15.     {

  16.         public override void Initialize()

  17.         {

  18.             // 标记报表类型

  19.             this.ReportProperty.ReportType = Core.Report.ReportType.REPORTTYPE_MOVE;

  20.             this.ReportProperty.IsGroupSummary = true;

  21.         }

  22.         

  23.         /// <summary>

  24.         /// 构建分页报表每个报表的临时表

  25.         /// 首先从分页依据中拿到本次分页的条件,就是当前页报表的条件:this.CacheDataList[filter.CurrentPosition]

  26.         /// 然后把条件拼装到SQL中,例如b.FLocaleId= dr["FLocaleId"] 语言id=当前报表的语言id

  27.         /// </summary>

  28.         /// <param name="filter"></param>

  29.         /// <param name="tableName"></param>

  30.         public override void BuilderReportSqlAndTempTable(IRptParams filter, string tableName)

  31.         {

  32.             DataRow dr = this.CacheDataList[filter.CurrentPosition];

  33.             string sSQL = @"select a.fdeptid as FID, fname,ffullname as fdesc,FLocaleId,'BD_DEPARTMENT' as fformid, {0} into {1} from T_BD_DEPARTMENT a 

  34. inner join T_BD_DEPARTMENT_l b on a.fdeptid=b.fdeptid where b.FLocaleId=" + dr["FLocaleId"].ToString();

  35.             KSQL_SEQ = string.Format(KSQL_SEQ, "b.FLocaleId");

  36.             sSQL = string.Format(sSQL, this.KSQL_SEQ, tableName);

  37.             

  38.             DBUtils.Execute(this.Context, sSQL);

  39.         }


  40.         public override List<Core.Report.SummaryField> GetSummaryColumnInfo(IRptParams filter)

  41.         {

  42.             List<Core.Report.SummaryField> fls = new List<Core.Report.SummaryField>();

  43.             Core.Report.SummaryField fs = new Core.Report.SummaryField("FLocaleId", Core.Enums.BOSEnums.Enu_SummaryType.SUM);

  44.             fls.Add(fs);

  45.             return fls;

  46.         }



  47.         /// <summary>

  48.         /// 分页报表必须实现的方法,此方法用于为报表提供分页依据。

  49.         /// 比如以下示例:分别按语言来对部门分类,也就是说每种语言一个报表,中文的是一个报表、英文的一个报表,繁体的一个

  50.         /// </summary>

  51.         /// <param name="filter"></param>

  52.         /// <returns></returns>

  53.         public override DataTable GetList(IRptParams filter)

  54.         {

  55.             DataTable dt;

  56.             string sSQL = "select FLocaleId from T_BD_DEPARTMENT_L group by FLocaleId";

  57.             dt = DBUtils.ExecuteDataSet(this.Context, sSQL).Tables[0];

  58.             return dt;

  59.         }


  60.         public override ReportTitles GetReportTitles(IRptParams filter)

  61.         {

  62.             ReportTitles titles = new ReportTitles();

  63.             if (CacheDataList == null)

  64.             { 

  65.                 DataTable dt =  GetList(filter);

  66.                 if (dt != null && dt.Rows.Count > 0)

  67.                 {

  68.                     //titles.AddTitle("FCondition", dt.Rows[0]["flocaleid"].ToString());

  69.                     return titles;

  70.                 }

  71.                 return null;

  72.             }

  73.             DataRow dr = this.CacheDataList[filter.CurrentPosition];

  74.             //titles.AddTitle("FCondition", dr["flocaleid"].ToString());

  75.             return titles;

  76.         }


  77.         public override ReportHeader GetReportHeaders(IRptParams filter)

  78.         {

  79.             // TODO:

  80.             ReportHeader header = new ReportHeader();

  81.             header.AddChild("FID", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("编码","002460030014674",Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));


  82.             header.AddChild("fname", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("全名","002460030014677",Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));

  83.             header.AddChild("fdesc", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("别名","002460030014680",Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID));


  84.             header.AddChild("FLocaleId", new LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString("类别","002460030014683",Kingdee.BOS.Resource.SubSystemType.BOS), this.Context.UserLocale.LCID),SqlStorageType.SqlInt);

  85.             return header;

  86.         }

  87.     }

  88. }


复制代码


赞 4