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

【应用场景】某些辅助资料字段之间有父子关系,比如国家、地区、省份、城市,当给子级辅助资料字段赋值时,可以自动给其父项辅助资料字段赋值。
【案例演示】采购订单,新增国家、地区、省份、城市四个辅助资料字段,当给城市赋值时,自动回填该城市对应的国家、地区、省份。

【实现步骤】
<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
二开案例.表单插件.辅助资料联动赋值
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



