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

二开案例.表达式函数.编写自定义的表达式函数(字符串包含函数)

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

二开案例.表达式函数.编写自定义的表达式函数(字符串包含函数)

【应用场景】

当Python内置函数和平台内置函数都无法满足编写表达式的需求时,可使用自定义函数。



【案例演示】

编写一个字符串包含函数,用于判断指定文本中是否包含某串字符。



【实现步骤】

<1>继承AbstractFuncDefine,编写自定义函数,实现字符串检索功能。

using Kingdee.BOS;
using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;
using System;
namespace Jac.XkDemo.BOS.Core.Functions
{
    /// <summary>
    /// 【函数】字符串包含函数
    /// https://vip.kingdee.com/article/81106082826904320
    /// </summary>
    [Serializable]
    public class StringContainsFuncDefine : AbstractFuncDefine
    {
        public StringContainsFuncDefine() { }
        public StringContainsFuncDefine(Context ctx, dynamic obj)
        {
            m_ctx = ctx;
            m_obj = obj;
        }
        public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)
        {
            return new StringContainsFuncDefine(ctx, obj);
        }
        public override object GetFuncDefine()
        {
            return new Func<string, string, bool>(StringContains);
        }
        /// <summary>
        /// 当前文本包含指定字符串时,返回true
        /// </summary>
        /// <param name="str">被检索的文本</param>
        /// <param name="findStr">要查找的字符串</param>
        /// <returns></returns>
        bool StringContains(string str, string findStr)
        {
            return str.IndexOf(findStr, StringComparison.OrdinalIgnoreCase) >= 0;
        }
    }
}



<2>向平台内置函数库注册自定义函数。

-- 注册字符串包含函数 

DELETE T_MDL_ELEMENTTYPE WHERE FID=888001;

INSERT INTO T_MDL_ELEMENTTYPE (FID,FIMGKEY,FTYPEID,FISVISIBLE,FELEMENTCLASS,FAPPEARANCECLASS)

VALUES (888001, '', 1, 0, 'Jac.XkDemo.BOS.Core.Functions.StringContainsFuncDefine,Jac.XkDemo.BOS

二开案例.表达式函数.编写自定义的表达式函数(字符串包含函数)

【应用场景】当Python内置函数和平台内置函数都无法满足编写表达式的需求时,可使用自定义函数。【案例演示】编写一个字符串包含函数,用于...
点击下载文档文档为doc格式

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

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