PXSelector 中的 BQL 按开头过滤
BQL in PXSelector to filter by a Starts With
我的 DAC 中有一个字段,我想在其中放置一个用于查找 SalesPersons 的选择器。我知道怎么做:
[PXSelector(typeof(SalesPerson.salesPersonCD)
,typeof(SalesPerson.salesPersonCD)
,typeof(SalesPerson.descr))]
我的问题是我想根据 SalesPerson CD 的前三个字符过滤此选择器,即 StartsWith "SSR" 或类似的东西。我知道您可以使用 Search<> 命令在选择器中使用 BQL,并且我知道如何设置常量 class,但我不确定按开头字符过滤的语法。
如果不创建自定义 BQL 运算符,您可以通过使用 LIKE 运算符并在末尾添加 % 通配符来实现 "Starts with"。您要过滤的 BQL 字段可能是一个 DAC 属性,在获取访问器中带有自定义代码,它采用您的用户输入字段并在末尾添加通配符,如下所示:
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>>>>))]
我的 DAC 中有一个字段,我想在其中放置一个用于查找 SalesPersons 的选择器。我知道怎么做:
[PXSelector(typeof(SalesPerson.salesPersonCD)
,typeof(SalesPerson.salesPersonCD)
,typeof(SalesPerson.descr))]
我的问题是我想根据 SalesPerson CD 的前三个字符过滤此选择器,即 StartsWith "SSR" 或类似的东西。我知道您可以使用 Search<> 命令在选择器中使用 BQL,并且我知道如何设置常量 class,但我不确定按开头字符过滤的语法。
如果不创建自定义 BQL 运算符,您可以通过使用 LIKE 运算符并在末尾添加 % 通配符来实现 "Starts with"。您要过滤的 BQL 字段可能是一个 DAC 属性,在获取访问器中带有自定义代码,它采用您的用户输入字段并在末尾添加通配符,如下所示:
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>>>>))]