二开案例.表单插件.单据类型切换后绑定数据
【应用场景】
单据类型切换后绑定数据。因为单据类型切换会使得整个页面刷新重建,因此抓取单据类型变更事件不能使用DataChanged事件,可以使用AfterBindData事件。
【案例演示】
采购订单,新增下拉列表字段和辅助资料字段,当切换单据类型后,把切换后的单据类型绑定到下拉列表,根据单据类型控制辅助资料的可选项。。
【实现步骤】
<1>编写表单插件,代码如下。
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【表单插件】单据类型切换后绑定数据
/// </summary>
[Description("【表单插件】单据类型切换后绑定数据"), HotUpdate]
public class BindDataAfterBillTypeChangedFormPlugIn : AbstractDynamicFormPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
BindComboField();
}
public override void BeforeF7Select(BeforeF7SelectEventArgs e)
{
base.BeforeF7Select(e);
if (e.BaseDataField.Key == "F_Jac_Assistant")
{
// 切换单据类型时,设置辅助资料显示不同的可选项
var billTypeObj = this.Model.GetValue("FBillTypeID") as DynamicObject;
if (billTypeObj != null)
{
if (billTypeObj["Id"].ToString() == "83d822ca3e374b4ab01e5dd46a0062bd")
{
// 标准采购订单
e.ListFilterParameter.Filter = string.Format("FNumber='{0}'", "KHLX01_SYS1");
}
else if (billTypeObj["Id"].ToString() == "6d01d059713d42a28bb976c90a121142")
{
// 标准委外订单
e.ListFilterParameter.Filter = string.Format("FNumber='{0}'", "KHLX02_SYS");
}
else if (billTypeObj["Id"].ToString() == "b8df755fd92b4c2baedef2439c29f793")
{
// 直运采购订单
e.ListFilterParameter.Filter = string.Format("FNumber='{0}'", "KHLX03_SYS");
}
}
}
}
private void BindComboField()
{
var enumList = GetEnumItems();
var comboList = this.View.GetFieldEditor<ComboFieldEditor>("F_Jac_Combo", 0);
if (comboList != null)
{
comboList.SetComboItems(enumList);
}
}
private List<EnumItem> GetEnumItems()
{
var enumList = new List<EnumItem>();
var billTypeObj = this.Model.GetValue("FBillTypeID") as DynamicObject;
if (billTypeObj != null)
{
var enumItem = new EnumItem();
enumItem.Caption = new LocaleValue(billTypeObj["Name"].ToString());
enumItem.EnumId = billTypeObj["Id"].ToString();
enumItem.Value = billTypeObj["Id"].ToString();
enumList.Add(enumItem);
}
return enumList;
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,新增下拉列表字段,新增辅助资料字段,注册表单插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单新增界面,切换单据类型,下拉列表也会跟着刷新。
不同的单据类型,可设置辅助资料有不同的可选项。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表单插件.单据类型切换后绑定数据
本文2024-09-23 04:00:21发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-162495.html