Ø 运行在Web层的插件
包括动态表单插件、单据编辑插件、基础资料编辑插件、列表插件等,控制着交互界面;
Ø 实现思路
调用Kingdee.BOS.ServiceHelper.dll的BusinessDataServiceHelper类提供的Load方法
Ø 插件准备
插件工程引用Kingdee.BOS.ServiceHelper.dll组件
类文件引用BusinessDataServiceHelper类所在的命名空间Kingdee.BOS.ServiceHelper
Ø BusinessDataServiceHelper.Load方法介绍
public static DynamicObject[] Load(Context ctx, BusinessInfo businessInfo, List<SelectorItemInfo> selector, OQLFilter ofilter).
构建过滤条件OQLFilter,检索某些字段片段信息(List<SelectorItemInfo>)的目标数据集合
public static DynamicObject[] Load(Context ctx, DynamicObjectType type, QueryBuilderParemeter queryParemeter)
构建过滤条件QueryBuilderParemeter,检索满足条件的目标数据集合
public static DynamicObject[] Load(Context ctx, Object[] pkArray, DynamicObjectType type)
指定目标数据id集合,根据数据id集合,动态对象类型,检索满足条件的目标数据集合
public static DynamicObject[] Load(Context ctx, string formid, List<SelectorItemInfo> selector, OQLFilter ofilter)
指定单据模型唯一标示,感兴趣的字段片段信息(也就是说,只取部分字段出来,不会把这个模型的所有字段数据都取出来),构建过滤条件OQLFilter
Ø 方法参数介绍
名称 | 类型 | 说明 |
ctx | Context | 系统上下文信息 |
businessInfo | BusinessInfo | 待检索数据的模型元数据信息 |
selector | List<SelectorItemInfo> | 字段片段信息 |
ofilter | OQLFilter | 快速过滤条件对象 |
type | DynamicObjectType | 动态实体类型 |
queryParemeter | QueryBuilderParemeter | 查询过滤对象 |
pkArray | Object[] | 目标实体数据id集合 |
formid | string | 待查询模型唯一标示 |
Ø 示例代码
C# | |
using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace MyDynamicFormPlugIn { public class Class7 : AbstractDynamicFormPlugIn { public override void ButtonClick(ButtonClickEventArgs e) { //加载id为10001的物料数据 //获取物料元数据 FormMetadata materialMetada = MetaDataServiceHelper.Load(this.Context, "BD_Material") as FormMetadata;
//构建过滤条件 QueryBuilderParemeter queryParameter = new QueryBuilderParemeter(); queryParameter.BusinessInfo = materialMetada.BusinessInfo; queryParameter.FilterClauseWihtKey = "FMaterailId = 10001";
//构建快捷过滤条件 OQLFilter filter = new OQLFilter(); filter.Add(new OQLFilterHeadEntityItem() { FilterString = "FMaterialId = 10001" });
//构建关心的字段片段信息 List<SelectorItemInfo> lstSelectorItemInfos = new List<SelectorItemInfo>(); //物料属性 lstSelectorItemInfos.Add(new SelectorItemInfo("FErpClsId")); //使用组织 lstSelectorItemInfos.Add(new SelectorItemInfo("FUseOrgId"));
//方法1: DynamicObject[] objs = BusinessDataServiceHelper.Load( this.Context, materialMetada.BusinessInfo.GetDynamicObjectType(), queryParameter); //方法2: objs = BusinessDataServiceHelper.Load( this.Context, new object[] { 10001 }, materialMetada.BusinessInfo.GetDynamicObjectType()); //方法3:根据过滤条件获取满足条件的目标数据的部分字段信息 objs = BusinessDataServiceHelper.Load( this.Context, materialMetada.BusinessInfo, lstSelectorItemInfos, filter); //方法4:根据过滤条件获取满足条件的目标数据的部分字段信息 objs = BusinessDataServiceHelper.Load( this.Context, "BD_Material", lstSelectorItemInfos, filter); } } } |
本文转载自:《K/3 Cloud BOS 插件开发百问百答》
作者:张晋博、丁振华
原文链接:https://open.kingdee.com/K3Cloud/Wenku/DocumentView.aspx?docId=117527
推荐阅读