二开案例.单据插件.基于列表过滤模型使用过滤条件表格和批量过滤条件表格

【应用场景】
在单据上使用过滤条件表格和批量过滤条件表格。
【案例演示】
采购订单,新增一个页签,演示如何在单据上使用过滤条件表格和批量过滤条件表格。
【实现步骤】
<1>编写单据插件,代码如下。
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Model.ListFilter;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.ComponentModel;
using System.Linq;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】基于列表过滤模型使用过滤条件表格和批量过滤条件表格
/// </summary>
[Description("【单据插件】基于列表过滤模型使用过滤条件表格和批量过滤条件表格"), HotUpdate]
public class FilterGridBillPlugIn : AbstractBillPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.EqualsIgnoreCase("F_Jac_Base"))
{
var formId = e.NewValue as string;
if (!string.IsNullOrWhiteSpace(formId))
{
SetFilterData(formId);
}
}
}
/// <summary>
/// 设置过滤数据
/// </summary>
/// <param name="objectTypeId">对象Id</param>
private void SetFilterData(string objectTypeId)
{
// 创建列表过滤模型
var listFilterModel = this.CreateListFilterModel(objectTypeId);
// 设置过滤条件表格
SetFilterGrid(listFilterModel);
// 设置可选分录
SetEntitySelect(listFilterModel);
}
/// <summary>
/// 创建列表过滤模型
/// </summary>
/// <param name="objectTypeId">业务对象Id</param>
/// <returns>列表过滤模型</returns>
private ListFilterModel CreateListFilterModel(string objectTypeId)
{
var listFilterModel = new ListFilterModel();
var formMetaData = FormMetaDataCache.GetCachedFormMetaData(this.Context, objectTypeId);
listFilterModel.FilterObject.FilterMetaData = CommonFilterServiceHelper.GetFilterMetaData(this.Context, string.Empty);
listFilterModel.SetContext(this.Context, formMetaData.BusinessInfo, formMetaData.BusinessInfo.GetForm().GetFormServiceProvider());
listFilterModel.InitFieldList(formMetaData, null);
return listFilterModel;
}
/// <summary>
/// 设置过滤条件表格
/// </summary>
/// <param name="listFilterModel"></param>
/// <returns></returns>
private void SetFilterGrid(ListFilterModel listFilterModel)
{
// 分录集合
var entityKeys = listFilterModel.BillBusinessInfo.Entrys.Select(o => o.Key).ToArray();
// 设置过滤行
listFilterModel.FilterObject.SetSelectEntity(entityKeys[0]);
var filterGrid = this.View.GetControl<FilterGrid>("FFilterGrid")
二开案例.单据插件.基于列表过滤模型使用过滤条件表格和批量过滤条件表格
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



