二开案例.过滤插件.列表过滤窗体上动态设置下拉字段的下拉项
【应用场景】列表过滤窗体上,给作为过滤条件的下拉列表字段动态设置下拉项。
【案例演示】采购订单列表过滤界面上的下拉列表字段,动态设置下拉项。
【实现步骤】
<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
二开案例.过滤插件.列表过滤窗体上动态设置下拉字段的下拉项
本文2024-09-23 04:20:56发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164726.html