2016-07-27 44 views
0

我已经创建了一个自定义选择器,其逻辑取决于屏幕标题部分的字段值。由于逻辑不在保存视图的图中,我将如何获取此头部分的缓存的当前值?我已经将头文件中引用的字段设置为commitchanges = true,我甚至在页面的标题部分放置了SyncPosition = true。下面的逻辑不给我说的(我假设)在缓存中的当前值:获取当前缓存以外的图

mh = (xTACMappingHeader)PXSelect< xTACMappingHeader, 
         Where< xTACMappingHeader.mappingName, Equal<Required<xTACMappingDetail.mappingName>>>>.Select(new PXGraph<FinancialTranslatorMaint>(), md.MappingName); 

什么是检索图形外的缓存以图形的当前值的最佳方法?

谢谢...

回答

1

您使用CacheAttached事件获得图形的保持。见下面的例子。

public class YourAttribute : PXEventSubscriberAttribute 
{ 
    private PXGraph _Graph = null; 

    public override void CacheAttached(PXCache sender) 
    { 
     _Graph = sender.Graph;  
     base.CacheAttached(sender); 
    } 
} 
2

PXCache对象从不存在于图的外部。

protected PXGraph _Graph; 

类似:

mh = (xTACMappingHeader)PXSelect<…>.Select(_Graph, md.MappingName); 

访问缓存的当前值:

_Graph.Caches[typeof(YourDAC)].Current 

当初始化缓存,Acumatica框架您可以通过PXCustomSelectorAttribute的_Graph领域获得电流图为每个字段属性调用CacheAttached()方法。 PXCustomSelectorAttribute基于当前初始化PXCache对象的图形属性_Graph字段分配值:

public class PXCustomSelectorAttribute : PXSelectorAttribute 
{ 
    ... 

    public override void CacheAttached(PXCache sender) 
    { 
     ... 

     _Graph = sender.Graph; 

     ... 
    } 

    ... 
} 
+0

很明显,_Graph变量是某种隐含的自定义选择器属性。我不知道它是如何得到它的价值的,但它似乎按照你指定的方式工作。我仍然想知道它是如何得到它的价值的,但目前并不那么重要。 非常感谢 – pmfith

+0

@pmfith,请检查,更新回答上面 – RuslanDev

+0

再次感谢! ; d – pmfith