PXSelector中的BQL通过Starts With进行过滤

时间:2016-09-26 15:07:17

标签: acumatica

我的DAC中有一个字段,我想放置一个查找SalesPersons的选择器。我知道怎么做:

        [PXSelector(typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.salesPersonCD)
               ,typeof(SalesPerson.descr))]

我的问题是我想根据SalesPerson CD的前三个字符过滤这个选择器,即StartsWith" SSR"或类似的东西。我知道你可以使用Search<>在选择器中使用BQL。命令,我知道如何设置一个常量类,但我不确定通过开头字符过滤的语法。

1 个答案:

答案 0 :(得分:3)

如果没有创建自定义BQL运算符,您可以实现"从"开始通过使用LIKE运算符,最后使用%通配符。您要过滤的BQL字段可能是一个DAC属性,在get访问器中包含自定义代码,它会获取用户输入的字段并在最后添加通配符,如下所示:

        public abstract class myFieldWildcard : PX.Data.IBqlField { };
        [PXString(30, IsUnicode = true)]
        public virtual String MyFieldWildcard
        {
            [PXDependsOnFields(typeof(myField)]
            get
            {
                return MyField + PXDatabase.Provider.SqlDialect.WildcardAnything;
            }
        }

然后,您就可以将该字段用作PXSelector属性的一部分:

[PXSelector(typeof(Search<SomeTable.someField, Where<SomeTable.someField,Like<Current<MyFilter.myFieldWildcard>>>>))]