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

二开案例.表达式函数.获取字段在上一行中的值

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

二开案例.表达式函数.获取字段在上一行中的值

【应用场景】获取字段在上一行中的值,通常应用于单据体或子单据体中。

【案例演示】新增函数,用于获取字段在上一行中的值,在采购订单的明细单据体中,当录入物料时,设置当前行的采购数量等于上一行的采购数量。

【实现步骤】

<1>编写函数,代码如下。

using Kingdee.BOS;

using Kingdee.BOS.Core.DependencyRules;

using Kingdee.BOS.Core.Metadata;

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

using System;


namespace Jac.XkDemo.BOS.Core.Functions

{

    /// <summary>

    /// 【函数】获取字段在上一行中的值

    /// </summary>

    [Serializable]

    public class GetPreRowFieldValueFuncDefine : AbstractFuncDefine

    {

        public GetPreRowFieldValueFuncDefine()

        {

        }


        public GetPreRowFieldValueFuncDefine(Context ctx, dynamic obj)

        {

            m_ctx = ctx;

            m_obj = obj;

        }


        public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)

        {

            return new GetPreRowFieldValueFuncDefine(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);

            if (field == null)

            {

                return null;

            }


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

            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;

            }


            // 获取上一行的行索引

            var preRowIndex = currentRowI

二开案例.表达式函数.获取字段在上一行中的值

【应用场景】获取字段在上一行中的值,通常应用于单据体或子单据体中。【案例演示】新增函数,用于获取字段在上一行中的值,在采购订单的明...
点击下载文档文档为doc格式

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

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