使用Fluent BQL定义ProcessingView时标准处理UI缺失的解决方法
自定义处理界面Fluent BQL视图配置问题
在自定义处理界面开发中,可通过Fluent BQL实现等价的查询逻辑,但如果视图定义未匹配处理视图的识别规则,就会导致标准处理UI(含勾选列、处理按钮、工具栏批量操作)无法正常生成。
问题复现场景
异常的Fluent BQL视图定义
开发者编写的Fluent查询代码如下,定义后无法渲染标准处理UI:
public SelectFrom<APPayment>. InnerJoin<APContact>.On<APContact.contactID.IsEqual<APPayment.remitContactID>>. Where< APPayment.cashAccountID.IsEqual<APStaleDatedCheckFilter.cashAccountID.FromCurrent>. And<APPayment.adjDate.IsLessEqual<APStaleDatedCheckFilter.cutoffDate.FromCurrent>>. And<APPayment.cleared.IsEqual<False>>. And<APPayment.released.IsEqual<True>>. And<APPayment.status.IsEqual<APDocStatus.closed>>. And<APPayment.docType.IsEqual<APDocType.quickCheck>>. And<APRegisterExt.usrStaleDated.IsEqual<False>> >.ProcessingView DetailsView;
可正常生成UI的传统BQL视图定义
替换为传统强类型BQL语法时,处理UI可正常渲染,对应代码为:
public PXFilteredProcessingJoin<APPayment, APStaleDatedCheckFilter, InnerJoin<APContact, On<APContact.contactID, Equal<APPayment.remitContactID>>>, Where<APPayment.cashAccountID, Equal<Current<APStaleDatedCheckFilter.cashAccountID>>, And<Where<APPayment.adjDate, LessEqual<Current<APStaleDatedCheckFilter.cutoffDate>>, And<APPayment.cleared, Equal<False>, And<Where<APPayment.released, Equal<True>, And<APPayment.status, Equal<APDocStatus.closed>, And<Where<APPayment.docType, Equal<APDocType.quickCheck>, And<APRegisterExt.usrStaleDated, Equal<False>>>>>>>>>>>> DetailsView;
Fluent语法的正确配置方式
Fluent BQL链路中生成处理视图的核心要求,是显式传入绑定的Filter实体类型作为泛型参数,让框架识别该视图为带Filter上下文的处理型视图。
- 错误写法中仅调用无泛型参数的
.ProcessingView,会生成不绑定Filter上下文的普通处理视图对象,无法和页面上的Filter控件建立关联,自然不会触发完整处理UI的渲染逻辑 - 正确写法需在
.ProcessingView方法上补充和传统BQL一致的Filter类型泛型参数,等价映射PXFilteredProcessingJoin的泛型定义,示例代码如下:
public SelectFrom<APPayment>. InnerJoin<APContact>.On<APContact.contactID.IsEqual<APPayment.remitContactID>>. Where< APPayment.cashAccountID.IsEqual<APStaleDatedCheckFilter.cashAccountID.FromCurrent>. And<APPayment.adjDate.IsLessEqual<APStaleDatedCheckFilter.cutoffDate.FromCurrent>>. And<APPayment.cleared.IsEqual<False>>. And<APPayment.released.IsEqual<True>>. And<APPayment.status.IsEqual<APDocStatus.closed>>. And<APPayment.docType.IsEqual<APDocType.quickCheck>>. And<APRegisterExt.usrStaleDated.IsEqual<False>> >.ProcessingView<APStaleDatedCheckFilter>() DetailsView;
调整完成后,该Fluent定义生成的视图运行时类型和传统PXFilteredProcessingJoin完全一致,可正常生成勾选列、全选操作、批量处理按钮、工具栏自定义操作等标准处理UI元素。
内容的提问来源于stack exchange,提问作者rjean99
相关产品推荐
相关产品推荐

