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

二开案例.表达式函数.获取枚举项名称

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

二开案例.表达式函数.获取枚举项名称

【应用场景】

在表达式中获取枚举项名称。


【案例演示

采购订单,新增下拉列表字段,通过表达式将下拉列表选中项的枚举值对应的枚举项名称携带到文本字段。



【实现步骤】

<1>编写函数,实现获取枚举项名称的功能(代码见附件)。

using Kingdee.BOS;

using Kingdee.BOS.Core.DependencyRules;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Core.Metadata.EntityElement;

using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;

using Kingdee.BOS.Core.Metadata.FieldElement;

using System;


namespace Jac.XkDemo.BOS.Core.Functions

{

    /// <summary>

    /// 【函数】获取枚举项名称

    /// </summary>

    [Serializable]

    public class GetEnumNameFuncDefine : AbstractFuncDefine

    {

        public GetEnumNameFuncDefine()

        {

        }


        public GetEnumNameFuncDefine(Context ctx, dynamic obj)

        {

            m_ctx = ctx;

            m_obj = obj;

        }


        public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)

        {

            return new GetEnumNameFuncDefine(ctx, obj);

        }


        public override object GetFuncDefine()

        {

            return new Func<string, object>(FuncDefine);

        }


        /// <summary>

        /// 获取枚举项名称

        /// </summary>

        /// <param name="fieldKey">下拉列表字段标识</param>

        /// <returns>返回枚举项名称</returns>

        object FuncDefine(string fieldKey)

        {


            if (string.IsNullOrWhiteSpace(fieldKey))

            {

                return null;

            }


            var businessInfo = (BusinessInfo)m_obj.ActiveInfo;

            var dynamicRowModel = (BOSDynamicRow)m_obj.ActiveObject;

            // 获取字段元数据

            var field = businessInfo.GetField(fieldKey) as ComboField;

            if (field == null)

            {

                return null;

            }


            object fieldValue = null;

            if (field.Entity is HeadEntity)

            {

                fieldValue = dynamicRowModel.Model.GetValue(field);

            }

            else

            {

                // 获取字段所在的单据体的数据包

                var entityDataObject = dynamicRowModel.Model.GetEntityDataObject(field.Entity);

                if (entityDataObject == null || entityDataObject.Count == 0)

                {

                    return null;

                }


                // 获取当前行的行索引

                var currentRowIndex = dynamicRowModel.Model.GetEntryCurrentRowIndex(field.EntityKey);

                if (currentRowIndex < 0 || currentRowIndex > entityDataObject.Count - 1)

                {

                    return null;

                }


                fieldValue = dynamicRowModel.Model.GetValue(field, currentRowIndex);

            }


            if (fieldValue == null || string.IsNullOrWhiteSpace(fieldValue.ToString()))

            {

                return null;

            }


            if (fie

二开案例.表达式函数.获取枚举项名称

【应用场景】在表达式中获取枚举项名称。【案例演示】采购订单,新增下拉列表字段,通过表达式将下拉列表选中项的枚举值对应的枚举项名称携...
点击下载文档文档为doc格式

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

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