二开案例.表单插件.辅助资料联动赋值

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

二开案例.表单插件.辅助资料联动赋值

【应用场景】某些辅助资料字段之间有父子关系,比如国家、地区、省份、城市,当给子级辅助资料字段赋值时,可以自动给其父项辅助资料字段赋值。

【案例演示】采购订单,新增国家、地区、省份、城市四个辅助资料字段,当给城市赋值时,自动回填该城市对应的国家、地区、省份。

【实现步骤】

<1>编写表单插件,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.App.Data;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【表单插件】辅助资料联动赋值

    /// </summary>

    [Description("【表单插件】辅助资料联动赋值"), HotUpdate]

    public class AssistantFieldSetValueForParentTemplateFormPlugIn : AbstractDynamicFormPlugIn

    {

        public override void DataChanged(DataChangedEventArgs e)

        {

            base.DataChanged(e);

            if (e.Field.Key.Equals("F_Jac_Assistant_City", StringComparison.OrdinalIgnoreCase))

            {

                var id = e.NewValue as string;

                if (string.IsNullOrWhiteSpace(id))

                {

                    return;

                }


                var sql = @"

-- 查询城市以及该城市所属的省份、地区、国家

SELECT a.FENTRYID AS 城市内码--,a.FNUMBER AS 城市编码,b.FDATAVALUE AS 城市名称

,c.FENTRYID AS 省份内码--,c.FNUMBER AS 省份编码,d.FDATAVALUE AS 省份名称

,e.FENTRYID AS 地区内码--,e.FNUMBER AS 地区编码,f.FDATAVALUE AS 地区名称

,g.FENTRYID AS 国家内码--,g.FNUMBER AS 国家编码,h.FDATAVALUE AS 国家名称

FROM T_BAS_ASSISTANTDATAENTRY a

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L b ON a.FENTRYID=b.FENTRYID AND b.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY c ON a.FPARENTID=c.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L d ON c.FENTRYID=d.FENTRYID AND d.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY e ON c.FPARENTID=e.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L f ON e.FENTRYID=f.FENTRYID AND f.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY g ON e.FPARENTID=g.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L h ON g.FENTRYID=h.FENTRYID AND h.FLOCALEID=2052

WHERE a.FENTRYID=@FID

";

                var parameter = new SqlParam("@FID", KDDbType.AnsiString, id);

                var dynamicObjects = DBUtils.ExecuteDynamicObject(this.Context, sql, paramList: new[] { parameter });

                if (dynamicObjects.Count > 0)

                {

                    // 注意:如果辅助资料设置了上级辅助资料,必须按辅助资料的上级辅助资料的层级关系,先给父节点赋值,再逐级给子节点赋值

                    this.Model.SetValue("F_Jac_Assistant_Country", dynamicObjects[0]["国家内码"]);

                    this.Model.SetValue("F_Jac_Assistant_Area", dynamicObjects[0]["地区内码"]);

                    this.Model.SetValue("F_Jac_Assistant_Province", dynamicObjects[0]["省份内码"]);

                }

            }

        }

    }

}


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


<3>BOSIDE扩展采购订单,新增4个单选辅助资料字段,注册表单插件,保存元数据,开发完毕。




现在可以登录业务站点,打开采购订单新增界面,给城市字段选择一个城市,检验一下插件的控制效果啦。

辅助资料类型国家、地区、省份、城市上下级关系:

联动赋值效果:

---------------------------------------------------------------------------------------------------------




【知识点】

<1>通过以下SQL可以查询辅助资料的父级辅助资料。

-- 查询城市以及该城市所属的省份、地区、国家

SELECT a.FENTRYID AS 城市内码,a.FNUMBER AS 城市编码,b.FDATAVALUE AS 城市名称

,c.FENTRYID AS 省份内码,c.FNUMBER AS 省份编码,d.FDATAVALUE AS 省份名称

,e.FENTRYID AS 地区内码,e.FNUMBER AS 地区编码,f.FDATAVALUE AS 地区名称

,g.FENTRYID AS 国家内码,g.FNUMBER AS 国家编码,h.FDATAVALUE AS 国家名称

FROM T_BAS_ASSISTANTDATAENTRY a

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L b ON a.FENTRYID=b.FENTRYID AND b.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY c ON a.FPARENTID=c.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L d ON c.FENTRYID=d.FENTRYID AND d.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY e ON c.FPARENTID=e.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L f ON e.FENTRYID=f.FENTRYID AND f.FLOCALEID=2052

LEFT JOIN T_BAS_ASSISTANTDATAENTRY g ON e.FPARENTID=g.FENTRYID

LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L h ON g.FENTRYID=h.FENTRYID AND h.FLOCALEID=2052

WHERE b.FDATAVALUE LIKE '%广州%'


---------------------------------------------------------------------------------------------------------




【参考链接】

【二开案例.元模型.单选辅助资料】https://vip.kingdee.com/article/157536706114078208



---------------------------------------------------------------------------------------------------------














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

二开案例.表单插件.辅助资料联动赋值

【应用场景】某些辅助资料字段之间有父子关系,比如国家、地区、省份、城市,当给子级辅助资料字段赋值时,可以自动给其父项辅助资料字段赋...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息