二开方案.动态干预过滤界面中可选择的字段原创
金蝶云社区-秀了个秀
秀了个秀
5人赞赏了该文章 468次浏览 未经作者许可,禁止转载编辑于2023年05月23日 18:24:55

【场景】

干预过滤界面中过滤条件、高级过滤、排序、显示隐藏列界面中的可选择字段。

【示例】

在不修改过滤模型的情况下,以动态隐藏可选择的字段为例(动态新增可根据示例反推)。

示例代码如下:

using System.ComponentModel;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.CommonFilter.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Model.CommonFilter;
using Kingdee.BOS.Util;

namespace Kingdee.BOS.TestPlugIn
{
    /// <inheritdoc />
    [HotUpdate]
    [Description("修改过滤方案条件")]
    public class TestBillOrgIsolationFilterPlugIn : AbstractCommonFilterPlugIn
    {
        /// <inheritdoc />
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);

            var filterModel = (ICommonFilterModel)this.Model;

            JSONObject removeJson = null;

            #region 过滤条件

            var filterGrid = this.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_FilterGrid);
            var filterObject = filterModel.FilterObject;//过滤条件对象
            var removeField = filterObject.GetFilterField("FText");
            var allFieldJson = filterObject.GetAllFilterFieldList();
            foreach (JSONObject jsonObject in allFieldJson)
            {
                if (jsonObject["FieldName"].GetString().EqualsIgnoreCase(removeField.FieldName))
                {
                    removeJson = jsonObject;
                }
            }

            if (removeJson != null)
            {
                allFieldJson.Remove(removeJson);
            }

            if (filterGrid != null)
            {
                filterGrid.SetFilterFields(allFieldJson);
            }

            #endregion

            #region 高级过滤

            var batchFilterGrid = this.View.GetControl<FilterGrid>(CommonFilterConst.ControlKey_BatchFilterGrid);
            var batchFilterObject = filterModel.BatchFilterObject;//高级过滤对象
            allFieldJson = batchFilterObject.GetAllFilterFieldList();
            foreach (JSONObject jsonObject in allFieldJson)
            {
                if (jsonObject["FieldName"].GetString().EqualsIgnoreCase(removeField.FieldName))
                {
                    removeJson = jsonObject;
                }
            }

            if (removeJson != null)
            {
                allFieldJson.Remove(removeJson);
            }

            if (batchFilterGrid != null)
            {
                batchFilterGrid.SetFilterFields(allFieldJson);
            }

            #endregion

            #region 排序

            var sortGrid = this.View.GetControl<SortSet>(CommonFilterConst.ControlKey_Sort);
            var sortObject = ((FilterModel)filterModel).SortObject;//排序对象
            allFieldJson = sortObject.GetAllSortFields();
            foreach (JSONObject jsonObject in allFieldJson)
            {
                if (jsonObject["FieldName"].GetString().EqualsIgnoreCase(removeField.FieldName))
                {
                    removeJson = jsonObject;
                }
            }

            if (removeJson != null)
            {
                allFieldJson.Remove(removeJson);
            }

            if (sortGrid != null)
            {
                sortGrid.SetSortFields(allFieldJson);
            }

            #endregion

            #region 显示隐藏

            var showHideGrid = this.View.GetControl<FieldShowHide>(CommonFilterConst.ControlKey_FieldShowHide);
            var columnObject = ((FilterModel)filterModel).ColumnObject;//显示隐藏列对象
            allFieldJson = columnObject.GetAllFieldList(true);
            foreach (JSONObject jsonObject in allFieldJson)
            {
                if (jsonObject["FieldName"].GetString().EqualsIgnoreCase(removeField.FieldName))
                {
                    removeJson = jsonObject;
                }
            }

            if (removeJson != null)
            {
                allFieldJson.Remove(removeJson);
            }

            var rowJson = columnObject.GetShowHideRows();
            removeJson = null;
            foreach (JSONObject jsonObject in rowJson)
            {
                if (jsonObject["FieldName"].GetString().EqualsIgnoreCase(removeField.FieldName))
                {
                    removeJson = jsonObject;
                }
            }

            if (removeJson != null)
            {
                rowJson.Remove(removeJson);
            }

            if (showHideGrid != null)
            {
                showHideGrid.SetShowHideFields(allFieldJson);
                showHideGrid.SetShowHideRows(rowJson);
            }

            #endregion


            #region 分组合计

            var summarySet = this.View.GetControl<SummarySet>(CommonFilterConst.ControlKey_SummarySet);
            var field = this.View.ParentFormView.BillBusinessInfo.GetField("FBillNo");
            if (field == null)
            {
                return;
            }
            var summaryFiled = new SummaryField
            {
                Caption = field.Name,
                Key = field.Key,
                FieldName = field.Key,
                EntityKey = field.EntityKey,
                Field = field
            };
            var summaryObject = ((FilterModel)this.Model).SummaryObject;
            if (!summaryObject.SummaryFieldList.Any(f => f.Key.EqualsIgnoreCase("FBillNo")))
            {
                summaryObject.AddSummaryFieldList(summaryFiled);
            }

            var allFieldJson = summaryObject.GetAllSummaryFields();
            if (summarySet != null)
            {
                summarySet.SetSummaryFields(allFieldJson);
            }

            #endregion
        }
    }
}
赞 5