U9 描述性弹性域单据开发范例说明 版 本 号 :V1.0 作者:彭超 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 彭超 2008-7-1 原始文档建立 一.问题域说明 弹性域是一个由多段组成的,用于解决软件产品客户化的一种软件结构。描述性弹性域用于为档案和单据动态增加附加信息的弹性域。描述性弹性域包含 30 个公共扩展段(全局段)和 30 个实体私有扩展段(全局段和上下文段)。本范例主要讲解如何在 U9 支持描述性弹性域的档案中实现描述性弹性域特性。 二.基本原理 (1)、后台实体字段示意:描述性弹性域包含 30 个公共扩展字段(全局段)和 30 个实体私有扩展字段(全局段和上下文相关段)。支持描述性弹性域结构的档案后台实体有如下结构的字段: 其中“实体扩展字段”为一个属性类型。它包含所有描述性弹性域需要用到的字段。 PubDescSeg1——PubDescSeg30:存储 30 个公共段。 PrivateDescSeg1——PrivateDescSeg30:存储全局段和上下文段(它们共用 30 个)。 ContextValue:上下文值,用于确定当前选中那个上下文。 (2)、前台维护描述性弹性域的字段原理: 三.关键代码及说明 1、说明:Base 中提供公共画面维护各档案中的描述性弹性域字段。 对应画面编号:CBO_UI_S194_03 描述性弹性域段录入(需求文档位置:U9.VOB.AH\CBO\SPEC\Function\Process\CBO_UI_S194_弹性域段录入及参照_1.0.doc) 2、调用方式:为了方便给公共维护画面传入入口参数,在 PDHelper 提供辅助类供调用。 � 卡片处理方式: 1)、拖一个弹性域控件,并设置其类型为 Description。 2)、在AfterCreateChildControls()里面调用: FlexFieldHelper.SetDescFlexField(this.FlexFieldPicker0, this. Model.Territory); 其中:this.FlexFieldPicker0为要设置的描述性弹性域控件,this. Model.Territory为描述性弹性域所在的View,把红色的Territory换成你的View就可以了。 � Grid 处理方式: 1)、在 Grid 的末尾加一文本列,不需要绑定任何字段。 2)、在AfterCreateChildControls()里面调用: FlexFieldHelper.SetDescFlexField(this.DataGrid3, 2); 其中:this. DataGrid3为要设置的描述性弹性域的Grid,2为描述性弹性域列(即上面添加的文本列)在Grid中的列索引。 如果一个 Form 只有一处用到描述性弹性域,可以使用上面面的方法,但是如果一个Form 有多处用到描述性弹性域(包括卡片和列表),请一定用下面的方式,提高效率: FlexFieldHelper.SetDescFlexField(DescFlexFieldParameter[] parameters); 其中 parameters 为整个 Form 上所有要设置的描述性弹性域的相关参数的数组(包括卡片和列表),new DescFlexFieldParameter 的时候请使用你想要的构造函数构造实例。 四.源代码使用说明 1. 一定要把描述性弹性域的字段拖到 UIModel 中。 2. 另外 UFIDA.U9.UI.PDHelper. FlexFieldHelper. SetDescFlexField 还有很多重载函数,可以直接在 VS 中查看其函数原型选择使用(某些特殊情况必须要选择其他函数才行)。 3. 部分人原来调用了一个 bp 检查是否定义描述性弹性域并根据它控制界面上描述性弹性域控件按钮是否置灰。现在可以不用写了,因为上面的步骤里面已经自动完成了这个过程,所以如果挂上以后发现描述性弹性域置灰属于正常情况,只要在节点“实体扩展字段”定义一下就可以了。 4. 本 范 例 是 用 了 地 区 节 点 作 为 样 例 , 其 前 台 模 型 位 置 为 : U9UICode\U9.VOB.PD.CBO\Base\Model\TerritoryUI\TerritoryUI.ubfuiproj 五.组装发布说明(可选)