二开案例.过滤符.非左包含
【应用场景】平台内置的过滤符无法满足数据过滤需求。
【案例演示】编写一个自定义过滤符,用于执行【非左包含】的数据查询。
【实现步骤】
<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_FieldInputCtlType】
0 , -- FDATASOURCETYPE - int【-1:不需要输入数据;1:SQL;3:固定列表;4:动态SQL,参考Enu_FilterDataSouceType】
0 , -- FDATAFIELDINDEX - int
N'' , -- FVALUE - nvarchar(50)
1 , -- FINPUT - int
'Jac.XkDemo.BOS.Core.Filter.ConditionVariables.NotLeftLikeAnalysis,Jac.XkDemo.BOS.Core' , -- FCLASSNAME - varchar(150)
'1' -- FISCUST - char(1)
);
DELETE FROM T_MDL_FILTERCONDITION_L WHERE FID=888001 AND FLOCALEID=2052;
INSERT INTO T_MDL_FILTERCONDITION_L
( FPKID ,
FID ,
FLOCALEID ,
FNAME ,
FDATASOURCE ,
FTOOLTIP
)
VALUES ( 888001 , -- FPKID - int
888001 , -- FID - int
2052 , -- FLOCALEID - int
N'非左包含' , -- FNAME - nvarchar(50)
N'' , -- FDATASOURCE - nvarchar(1000)
N'非左包含' -- FTOOLTIP - nvarchar(200)
);
*/
<3>将自定义过滤符所在程序集编译后拷贝组件到应用服务器星空站点对应的WebSite\Bin目录下,然后重启IIS,使新增的自定义过滤符即时生效。
<4>登录BOSIDE,扩展采购订单,选中单据编号字段,修改过滤比较符号集,如下图所示,修改完毕后,保存元数据,开发完毕。
现在可以登录业务站点,打开采购订单列表,快捷过滤中,选择单据编号字段,进行【非左包含】的查询操作啦。
断点插件,可以看到【非左包含】产生的过滤条件如下。
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.过滤符.非左包含
本文2024-09-23 04:21:24发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164777.html