电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-2316

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

【应用场景】

在单据上使用过滤条件表格和批量过滤条件表格。


【案例演示】

采购订单,新增一个页签,演示如何在单据上使用过滤条件表格和批量过滤条件表格。


【实现步骤】

<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")

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

【应用场景】在单据上使用过滤条件表格和批量过滤条件表格。【案例演示】采购订单,新增一个页签,演示如何在单据上使用过滤条件表格和批量...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信