二开案例.过滤符.等于(忽略大小写)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.过滤符.等于(忽略大小写)

【应用场景】数据过滤时,需要忽略大小写。

【案例演示】编写一个自定义过滤符,用于执行【等于(忽略大小写)】的数据查询。【实现步骤】

<1>编写自定义过滤符,代码如下。

using Kingdee.BOS.Core.CommonFilter;

using Kingdee.BOS.Core.CommonFilter.ConditionVariableAnalysis;


namespace Jac.XkDemo.BOS.Core.Filter.ConditionVariables

{

    /// <summary>

    /// 【过滤符】等于(忽略大小写)

    /// </summary>

    public class EqualsIgnoreCaseAnalysis : AbstractVariableAnalysisPlugin

    {

        /// <summary>

        /// 生成过滤条件

        /// </summary>

        /// <param name="ctx"></param>

        /// <returns></returns>

        public override string GetVariableFilter(ConditionVariableContext ctx)

        {

            var filterString = string.Format(" UPPER({0}) {1} '{2}' ", ctx.FieldName, ctx.Operater, ctx.CompareValue.ToUpper());// 英文字符

            //filterString = string.Format(" UPPER({0}) {1} N'{2}' ", ctx.FieldName, ctx.Operater, ctx.CompareValue.ToUpper());// 中文字符

            return filterString;

        }


        /// <summary>

        /// 照搬GetVariableFilter的实现就好

        /// </summary>

        /// <param name="ctx"></param>

        /// <returns></returns>

        public override string GetScriptFilter(ConditionVariableContext ctx)

        {

            return GetVariableFilter(ctx);

        }

    }

}



/*

-- 添加自定义过滤符

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  ( 888005 , -- FID - int

          88888 , -- FCONDITIONTYPEID - int 【符号集编码】

          1 , -- FSEQ - int

          '=' , -- 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.EqualsIgnoreCaseAnalysis,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  ( 888005 , -- FPKID - int

          888005 , -- 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

二开案例.过滤符.等于(忽略大小写)

【应用场景】数据过滤时,需要忽略大小写。【案例演示】编写一个自定义过滤符,用于执行【等于(忽略大小写)】的数据查询。【实现步骤】<1>...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息