列表插件.二开案例.打开列表时干预显示实体
【场景】打开列表时干预显示实体
【案例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...
点击下载文档
本文2024-09-16 18:16:11发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-21032.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章