我创建了一个自定义选择器,其逻辑取决于屏幕标题部分中字段的值。由于逻辑不在保存视图的图形中,因此如何获取此标题部分的高速缓存的当前值?我已经在标题中将我引用的字段设置为commitchanges = true,我甚至将SyncPosition = true放在页面的标题部分中。以下逻辑没有给出我在缓存中的当前值(我假设):
mh = (xTACMappingHeader)PXSelect< xTACMappingHeader,
Where< xTACMappingHeader.mappingName, Equal<Required<xTACMappingDetail.mappingName>>>>.Select(new PXGraph<FinancialTranslatorMaint>(), md.MappingName);
在该图表之外的图表中检索缓存的当前值的最佳方法是什么?
...谢谢
答案 0 :(得分:2)
PXCache对象永远不会出现在图形之外。您可以通过PXCustomSelectorAttribute的_Graph字段访问当前图形:
protected PXGraph _Graph;
类似的东西:
mh = (xTACMappingHeader)PXSelect<…>.Select(_Graph, md.MappingName);
访问缓存的当前值:
_Graph.Caches[typeof(YourDAC)].Current
在初始化缓存时,Acumatica Framework会为每个字段属性调用CacheAttached()方法。 PXCustomSelectorAttribute根据当前初始化的PXCache对象的Graph属性为_Graph字段赋值:
public class PXCustomSelectorAttribute : PXSelectorAttribute
{
...
public override void CacheAttached(PXCache sender)
{
...
_Graph = sender.Graph;
...
}
...
}
答案 1 :(得分:2)
您可以使用CacheAttached事件获取图表。见下面的例子。
public class YourAttribute : PXEventSubscriberAttribute
{
private PXGraph _Graph = null;
public override void CacheAttached(PXCache sender)
{
_Graph = sender.Graph;
base.CacheAttached(sender);
}
}