二开案例.列表插件.打开F8列表时指定快捷过滤条件
【应用场景】
打开F8列表时指定快捷过滤条件。
【案例演示】
采购订单,打开物料的F8列表时,将采购订单单据头上的计量单位字段的值,传递给物料F8列表的快捷过滤字段基本单位,并参与列表过滤。
【实现步骤】
<1>编写列表插件,代码如下。
using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.ListFilter; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System.ComponentModel; using System.Linq; namespace Jac.XkDemo.BOS.Business.PlugIn { /// <summary> /// 【列表插件】打开F8列表时指定快捷过滤条件 /// </summary> [Description("【列表插件】打开F8列表时指定快捷过滤条件"), HotUpdate] public class SetQuickFilterRowListPlugIn : AbstractListPlugIn { public override void PrepareFilterParameter(FilterArgs e) { base.PrepareFilterParameter(e); if (!this.ListView.OpenParameter.IsBaseList()) { return; } if (this.View.ParentFormView == null || !this.View.ParentFormView.BillBusinessInfo.GetForm().Id.EqualsIgnoreCase("PUR_PurchaseOrder")) { return; } // 获取源单上的计量单位的值 var value = this.View.ParentFormView.Model.GetValue("F_Jac_Base") as DynamicObject; if (value == null || value["Name"] == null) { return; } var unitName = value["Name"].ToString(); if (string.IsNullOrWhiteSpace(unitName)) { return; } // 基本单位过滤字段的字段名 var filterFieldName = "FBaseUnitId.FName"; // 基础资料.名称 //var filterFieldName = "FBaseUnitId.FNumber";// 基础资料.编码 var filterModel = this.View.GetService<IListFilterModelService>(); if (filterModel != null && filterModel.QuickFilterObject != null && filterModel.QuickFilterObject.FilterRows != null && filterModel.QuickFilterObject.FilterRows.Count > 1) { var hasRow = false; foreach (var filterRow in filterModel.QuickFilterObject.FilterRows) { if (filterRow.FilterField.FieldName.EqualsIgnoreCase(filterFieldName)) { filterRow.Value = unitName; hasRow = true; } } if (!hasRow) { CreateFilterRow(filterModel.QuickFilterObject, filterFieldName, "等于", unitName); } this.ListView.Model.FilterParameter.QuickFilterString = filterModel.GetQuickFilterString(); //e.QuickFilterString = this.ListView.Model.FilterParameter.QuickFilterString;// 2022年03月17日(PT-146905)之后的补丁,需要加上这一句 } } /// <summary> /// 创建过滤行 /// </summary> /// <param name="filterObject"></param> /// <param name="filterFieldName"></param> /// <param name="compareTypeName"></param> /// <param name="value"></param> private void CreateFilterRow(FilterObject filterObject, string filterFieldName, string compareTypeName, string value) { var filterField = filterObject.AllFilterFieldList.FirstOrDefault(o => o.FieldName.EqualsIgnoreCase(filterFieldName)); if (filterField == null) { return; } var filterRow = new FilterRow(); filterRow.FilterField = filterField; filterRow.CompareType = filterField.CompareType.FirstOrDefault(o => o.Name.EqualsIgnoreCase(compareTypeName)); if (filterRow.CompareType == null) { filterRow.CompareType = filterField.CompareType.FirstOrDefault(); } filterRow.Value = value; filterRow.Logic = LogicOperate.AND; filterObject.FilterRows.Add(filterRow); } } }
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,采购订单新增基础资料字段:计量单位,物料字段禁用F8列表缓存。
<4>BOSIDE扩展物料,注册列表插件,保存元数据,开发完毕。
如需更好的使用体验,还可以提前按需调整默认显示的快捷过滤字段,如下图。
【功能验证】
<1>登录业务站点,打开采购订单新增界面,先输入计量单位,再打开物料的F8列表,此时采购订单上的计量单位已被携带到物料的F8列表的快捷过滤条件中。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.列表插件.打开F8列表时指定快捷过滤条件
【应用场景】打开F8列表时指定快捷过滤条件。【案例演示】采购订单,打开物料的F8列表时,将采购订单单据头上的计量单位字段的值,传递给物...
点击下载文档
上一篇:解除协同云管控下一篇:二开案例.列表插件.列表快捷过滤条件连接符改为OR
本文2024-09-23 04:00:59发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162566.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章