Acumatica中无法调用Ask()方法,2021 R2如何获取数据视图?
问题解答:Acumatica中Ask()方法调用失败的原因与解决方案
错误核心原因
你尝试在**SOOrder实体对象(row)**上调用Ask()方法,但Ask()是PXGraph或PXDataView类的成员方法,实体对象本身并不包含这个方法——这和2021 R2版本没有关系,是调用对象的误用。
课程示例中ShipmentLines.Ask(...)能正常运行,是因为ShipmentLines是页面对应的PXDataView实例,而非实体对象。
正确实现方式
有两种常用的正确调用方式:
方式1:通过当前Graph实例调用
事件所在的类继承自PXGraph,直接用this指代当前Graph实例即可调用Ask():
protected virtual void _(Events.RowSelected<SOOrder> e) { if (e.Row is null) return; this.Ask("Ask User something", MessageButtons.OK); }
方式2:通过指定DataView调用
如果需要关联特定视图的上下文,可以先获取对应的PXDataView实例再调用(前提是Graph中已定义该视图):
// 假设当前Graph中已定义SOOrder的视图:public PXSelect<SOOrder> Orders; protected virtual void _(Events.RowSelected<SOOrder> e) { if (e.Row is null) return; Orders.Ask("Ask User something", MessageButtons.OK); }
关于版本变更的说明
Acumatica 2021 R2并没有修改Ask()方法的调用规则,该方法始终属于PXGraph或PXDataView,实体对象无法直接调用,课程示例的逻辑是正确的,只是你误用了调用对象。
内容的提问来源于stack exchange,提问作者MarkJoel60
相关产品推荐
相关产品推荐

