二开案例.表单插件.单据类型切换后绑定数据

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

二开案例.表单插件.单据类型切换后绑定数据

【应用场景】

单据类型切换后绑定数据。因为单据类型切换会使得整个页面刷新重建,因此抓取单据类型变更事件不能使用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

二开案例.表单插件.单据类型切换后绑定数据

【应用场景】单据类型切换后绑定数据。因为单据类型切换会使得整个页面刷新重建,因此抓取单据类型变更事件不能使用DataChanged事件,可以...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息