U9报表处理策略U9客户化开发支持部苗庆波2009年06月19日课程编号:报表处理策略项目重写关键方法报表与策略关系绑定报表处理策略部署报表处理策略处理策略概念策略是处于报表数据源、报表展现界面之间的一层代码结构策略的功能调整模版设置查询方案的默认值:当前登录组织、日期、统计期间等对输入条件的验证:条件的合法性验证、相对非空验证对复杂条件的控制:相对值查询功能,比如今天、明天、上月、本月等对钻取动作的设置创建处理策略项目基类ReportProcessStrategy手工创建创建xxxRptProcessStrategy类,继承ReportProcessStrategy添加引用U9.VOB.Product.Component\UBF\UFIDA.U9.Query.QueryCaseBP.Deploy.dllU9.VOB.Product.Component\UI\UFIDA.U9.SCM.Pub.ReportStrategy.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFIDA.U9.UI.PDHelper.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFIDA.UBF.Query.CaseModel.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFIDA.UBF.Report.App.UI.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFSoft.UBF.Report.Entity.dll………………………………U9.VOB.Product.UBF\UBFStudio\Runtime\UFSoft.UBF.Report.ExtendLibrary.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFSoft.UBF.UI.ActionProcess.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFSoft.UBF.UI.Portal.dllU9.VOB.Product.UBF\UBFStudio\Runtime\UFSoft.UBF.View.Query.dll重写基类方法-- ProcessFormat方法重写ProcessFormat方法用于动态处理格式,依据控制参数调整模板格式protected override void ProcessFormat(){base.ProcessFormat();if (m_case == null)return;IDynamicTemplateGenerator generator = DynamicTemplateGenerator.GetInstance(m_reportTemplate);ITableSchema tableSchema = generator.GetDefaultTableSchema();//加入自己处理格式的操作int SOBFormat = 0;if (ReportAppService.GetFilterValue("SOBFormat", m_case) != null){SOBFormat = int.Parse(ReportAppService.GetFilterValue("SOBFormat", m_case).Values[0]);}//账簿格式if (SOBFormat == 1){//删除数量和调整数量tableSchema.RemoveColumn("Amount", true);//删除调整数量tableSchema.RemoveColumn("AdjustAmount", true);}tableSchema.AdjustTableHead();m_loadReportTemplateArgs.DefaultTemplate = generator.GetTemplate();}重写基类方法--ProcessCaseDefine方法重写ProcessCaseDefine方法处理条件项定义信息:参数赋默认值、调整参照、弹性域处理示例public override CaseDefine ProcessCaseDefine(Case usercase, CaseDefine caseDefine){caseDefine = base.ProcessCaseDefine(usercase, caseDefine);//组织赋默认值ReportStrategyHelper.SetDefaultValue(caseDefine.FilterDefines.GetObjectByName("LogisticOrg_Code"),PDContext.Current.OrgRef.NameColumn,PDContext.Current.OrgRef.CodeColumn,UFSoft.UBF.Report.Filter.enuOperatorListType.Equal);return caseDefine;}重写基类方法-- VerifyParameters方法重写VerifyParameters方法校验参数合法性示例public override string VerifyParameters(Case usercase, CaseDefine caseDefine){string note = base.VerifyParameters(usercase, caseDefine);if (note != null)return note;if (usercase != null){if (usercase.Columns.Count == 0)return "请选择栏目!";}FilterValue RMA_BusinessDate = usercase.FilterValues.GetObjectByName("RMA_BusinessDate");if (Convert.ToDateTime(RMA_BusinessDate.Values.Values[0]).CompareTo(Convert.ToDateTime(RMA_BusinessDate.Values.Values[1])) > 0){return "开始日期不能大于结束日期!";}return null;}重写基类方法-- FilterItemChangedEventHandler方法重写FilterItemChangedEventHandler方法条件值发生变化时的处理入口,调整条件值、查询方案示例public override void FilterItemChangedEventHandler(FilterDef...