列表插件.二开案例.打开列表时干预显示实体

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

列表插件.二开案例.打开列表时干预显示实体

【场景】打开列表时干预显示实体 【案例1】通过代码主动打开列表,设置显示实体 [打开列表时设置显示实体](https://wenku.my7c.com/article/274543062217708800?productLineId=1) ```csharp IRegularFilterParameter listFilterParameter = new ListRegularFilterParameter(); listFilterParameter.SelectEntitys = new List<string>() { headEntity }; ``` ![image.webp](/download/0100705b1e9504d44caaa292068ce4a5a024.webp) 【案例2】列表打开时,强制追加显示实体 由于部分场景的列表打开是无法干预的,如批量生成界面的列表批处理,或者其他打开列表逻辑,那么需要在当前列表界面直接干预 ![image.webp](/download/0100ef7ddf0c30ed43158bd8e5fc3481e0e4.webp) ```charp using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.Core.Enums; using Kingdee.BOS.Core.List.PlugIn; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.ListFilter; using System; using System.Collections.Generic; using System.Linq; namespace DynamicFormPlugIn.List { [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("打开列表时,设置默认显示明细实体")] public class ListPlugIn_AppendSelectEntity : AbstractListPlugIn { /// <summary> /// 设置自动打开列表,打开明细的表单 /// </summary> private HashSet<string> ShowEntityForm = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "BOS_ConvertResultForm", "PUR_Requisition" }; private bool firstFilter = false; private string specEntityKey = "FPOOrderEntry"; public override void PrepareFilterParameter(FilterArgs e) { //判断是否为普通列表,避免影响选单列表等其他逻辑 if (this.ListView.OpenParameter.ListType != (int)Kingdee.BOS.Core.Enums.BOSEnums.Enu_ListType.List) return; //仅第一次过滤干预,后续客户调整过滤方案不受影响 if (firstFilter) return; firstFilter = true; //判断父视图是指定类型 if (this.View.ParentFormView == null) return; string parentFormId = this.View.ParentFormView.BillBusinessInfo.GetForm().Id; if (!ShowEntityForm.Contains(parentFormId)) return; if (e.SelectedEntities == null) return; //如果存在表体的过滤,就不能再追加了,会导致笛卡尔积 if (e.SelectedEntities.Any(x => x.EntityType == BOSEnums.Enum_EntityType.Entity)) return; //判断当前过滤实体是否已经追加了 if (e.SelectedEntities.Any(a => string.Equals(a.Key, specEntityKey))) return; IListFilterModelService filterModel = this.ListModel.GetService<IListFilterModelService>(); FilterEntity filterEntity = filterModel.EntityObject.GetEntity(specEntityKey); if (filterEntity != null) { filterEntity.Selected = true; } e.SelectedEntities.Add(filterEntity); var columnObject = filterModel.ColumnObject; //增加默认显示字段 foreach(var columnField in columnObject.AllFieldList) { if (columnField == null) continue; if (columnField.DefaultVisible && string.Equals(columnField.EntityKey, specEntityKey, StringComparison.OrdinalIgnoreCase)) { //设置为显示并追加到过滤条件中 columnField.Visible = true; e.ColumnFields.Add(columnField); } } } } } ``` 【效果】批量下推界面,点击列表批量生成后,打开的列表默认显示采购订单的明细 ![231101 1529.webp](/download/01000e1248be3f0b49399e081d6f5026dc74.webp)

列表插件.二开案例.打开列表时干预显示实体

【场景】打开列表时干预显示实体【案例1】通过代码主动打开列表,设置显示实体[打开列表时设置显示实体](https://wenku.my7c.com/article/2...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息