二开案例.过滤插件.列表过滤窗体上动态设置下拉字段的下拉项

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

二开案例.过滤插件.列表过滤窗体上动态设置下拉字段的下拉项

【应用场景】列表过滤窗体上,给作为过滤条件的下拉列表字段动态设置下拉项。

【案例演示】采购订单列表过滤界面上的下拉列表字段,动态设置下拉项。

【实现步骤】

<1>编写列表过滤插件,代码如下。

using Kingdee.BOS.Core.ListFilter;

using Kingdee.BOS.JSON;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;

using System.Linq;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【过滤插件】列表过滤窗体上动态设置下拉列表字段的下拉项

    /// </summary>

    [Description("【过滤插件】列表过滤窗体上动态设置下拉列表字段的下拉项"), HotUpdate]

    public class SetComboBoxItemsBeforeFilterGridF7SelectListFilterPlugIn : AbstractListFilterPlugIn

    {

        public override void FireBeforeBindFilterMetadata(EventArgs e)

        {

            base.FireBeforeBindFilterMetadata(e);

            if (this.View.ParentFormView != null && this.View.ParentFormView.BillBusinessInfo.GetForm().Id.Equals("PUR_PurchaseOrder", StringComparison.OrdinalIgnoreCase))

            {

                // 当前列表过滤窗体为采购订单列表时,动态填充过滤条件中的下拉列表字段的下拉项

                var cmbField = this.CommonFilterModel.FilterObject.FilterFieldList.FirstOrDefault(t => t.Key.EqualsIgnoreCase("F_Jac_Combo"));

                if (cmbField == null)

                {

                    return;

                }


                var commonFilterEditor = cmbField.Editor;

                var quickFilterEditor = cmbField.QuickFilterEditor;

                var oldItems = (JSONArray)commonFilterEditor.Get("store");

                // 动态获取下拉项集合

                var newItems = GetItems();

                commonFilterEditor.Put("store", newItems);

                quickFilterEditor.Put("store", newItems);

            }

        }


        /// <summary>

        /// 获取下拉列表的下拉项集合

        /// </summary>

        /// <returns></returns>

        private JSONArray GetItems()

        {

            var items = new JSONArray();

            // 模拟动态生成下拉列表的下拉项

            var item = new JSONArray();

            item.Add("0");

            item.Add("未发货");

            items.Add(item);

            item = new JSONArray();

            item.Add("1");

            item.Add("已发货");

            items.Add(item);

            item = new JSONArray();

            item.Add("2");

            item.Add("已收货");

            items.Add(item);

            item = new JSONArray();

            item.Add("5");

            item.Add("自定义选项1");

            items.Add(item);

            item = new JSONArray();

            item.Add("6");

            item.Add("自定义选项2");

            items.Add(item);


            return items;

        }

    }

}


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,新增下拉列表字段,设置枚举类型为【发货状态】,保存元数据。


<4>BOSIDE扩展【列表过滤(带组织)[BOS_OrgIsolationFilter]】,注册表单插件,保存元数据,开发完毕。


现在可以登录业务站点,打开采购订单列表界面,点击过滤菜单打开列表过滤界面,检验一下插件的设置效果啦。

下拉列表字段的原始下拉项:

通用过滤:

快捷过滤:

【注意】快捷过滤中的下拉列表字段的下拉项,需点开过列表过滤窗体后才会刷新。
















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.过滤插件.列表过滤窗体上动态设置下拉字段的下拉项

【应用场景】列表过滤窗体上,给作为过滤条件的下拉列表字段动态设置下拉项。【案例演示】采购订单列表过滤界面上的下拉列表字段,动态设置...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息