电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

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

来源:金蝶云社区作者:金蝶2024-09-234

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

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

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

【实现步骤】

<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.SetVa

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

【应用场景】某些辅助资料字段之间有父子关系,比如国家、地区、省份、城市,当给子级辅助资料字段赋值时,可以自动给其父项辅助资料字段赋...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信