二开案例.过滤符.非左包含

【应用场景】平台内置的过滤符无法满足数据过滤需求。
【案例演示】编写一个自定义过滤符,用于执行【非左包含】的数据查询。

【实现步骤】
<1>继承 AbstractVariableAnalysisPlugin,编写自定义过滤符,实现条件过滤功能。
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.CommonFilter.ConditionVariableAnalysis;
namespace Jac.XkDemo.BOS.Core.Filter.ConditionVariables
{
/// <summary>
/// 【过滤符】非左包含
/// </summary>
public class NotLeftLikeAnalysis : AbstractVariableAnalysisPlugin
{
/// <summary>
/// 生成过滤条件
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
public override string GetVariableFilter(ConditionVariableContext ctx)
{
var filterString = string.Format(" {0} NOT LIKE '{1}%' ", ctx.FieldName, ctx.CompareValue);
return filterString;
}
/// <summary>
/// 照搬GetVariableFilter的实现就好
/// </summary>
/// <param name="ctx"></param>
/// <returns></returns>
public override string GetScriptFilter(ConditionVariableContext ctx)
{
return GetVariableFilter(ctx);
}
}
}
<2>执行以下SQL脚本,向平台内置过滤比较符号库注册自定义过滤符。
/*
-- 添加自定义过滤符
DELETE FROM T_MDL_FILTERCONDITION WHERE FID=888001;
INSERT INTO T_MDL_FILTERCONDITION
( FID ,
FCONDITIONTYPEID ,
FSEQ ,
FOPERATE ,
FINPUTCTLTYPE ,
FDATASOURCETYPE ,
FDATAFIELDINDEX ,
FVALUE ,
FINPUT ,
FCLASSNAME ,
FISCUST
)
VALUES ( 888001 , -- FID - int
88888 , -- FCONDITIONTYPEID - int
1 , -- FSEQ - int
'NOT LIKE' , -- FOPERATE - varchar(50)
9 , -- FINPUTCTLTYPE - int【-1:常量,不需要输入数据;0:手工录入(包括文本, 日期, 数值等);1:下拉选择 (包括下拉列表, 字段比较等);9:自定义,参考Enu_FieldInputCtlTy
二开案例.过滤符.非左包含
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



