U9 关键性弹性域开发-报表范例说明 版 本 号 :V1.0 作者:王少松 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 王少松 2008-6-25 原始文档建立 一. 问题域说明 关键性键弹性域(Key Flex Field ):用于为某些档案动态定义复合主键的弹性域。 (U9-编码结构)。 在业务报表开发中,因为不能在设计态获得足够的信息,所以需要在运行时动态处理,如条件项名称和值集的参照,以及栏目、行分组项目、列分组项目、排序项目的名称等信息。 二.基本原理 首先取得关键性弹性域的定义信息,然后调用报表平台的处理函数,统一处理和弹性域相关的条件项、栏目、行分组项目、列分组项目、排序项目。 三.关键代码及说明 1. 关键性弹性域定义信息 UBFCode\U9.VOB.UBF\AutoCoding\CodingApp\QueryReport\Code\QueryCaseBP\BpImplement\QueryCaseBP\KeyFlexFieldSegInfoDTO.cs 2. 获得关键性弹性域定义信息(GetFlexSegLevelInfo) UBFCode\U9.VOB.UBF\AutoCoding\CodingApp\QueryReport\Code\ReortCaseBP\BpImplement\ReortCaseBP\GetFlexSegLevelInfoExtend.cs ///
/// 获取关键弹性域段级次处理BP /// ///
///
public override object Do(object obj) { GetFlexSegLevelInfo bpObj = (GetFlexSegLevelInfo)obj; List
list = new List(); if (bpObj.KeyFlexFieldStruIDs == null) return list; for (int i = 0; i < bpObj.KeyFlexFieldStruIDs.Count; i++) { KeyFlexFieldStru def = KeyFlexFieldStru.Finder.FindByID(bpObj.KeyFlexFieldStruIDs[i]); List KeyList = new List(); string separator = "-"; if (def != null) separator = def.Separator; if (def != null && def.Segments != null) { for (int j = 0; j < def.Segments.Count; j++) { KeyFlexFieldSegInfoDTO ItemData = new KeyFlexFieldSegInfoDTO(); if (def.Segments[j].IsDynamicValueSet) { ItemData.DynamicValue = true; //动态值集合 ItemData.SegEntity = def.Segments[j]; ItemData.SegmentSeparator = separator; //分隔符定义 ItemData.DynamicValueSetDef = GetDynamicValueSetdef(def.Segments[j]); } else { ItemData.SegEntity = def.Segments[j]; ItemData.ValueSetDef = def.Segments[j].ValueSetDef; } if (ItemData.ValueSetDef != null || ItemData.DynamicValue) { KeyList.Add(ItemData); } } } //end setDef KeyFlexFieldSegLevelList keyFlexFieldSegLevelList = new KeyFlexFieldSegLevelList(); keyFlexFieldSegLevelList.SegList = KeyList; keyFlexFieldSegLevelList.Seprator = separator; list.Add(keyFlexFieldSegLevelList); } return list; } //end Do 3. 根据分类性质获得料品分类弹性域(GetItemCategoryFlexFieldStrutID) 4. 根据关键性弹性域定义处理条件项、栏目、行分组项目、列分组项目、排序项目 UBFCode\U9.VOB.UBF\ADF\Analysis\QueryReport\UFIDA.UBF.Report.App.UI\Service\ReportFlexFieldHelper.cs /// /// 处理关键性弹性域 /// /// 方案定义信息 /// 关键弹性域段 /// 栏目/参数名称前缀 /// 是否处理参数 /// 是否处理栏目 /// 是否处理行分组 /// 是否处理列分组 /// 查看更多