2016-07-27 5 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オブジェクトは、グラフの外に存在することはありません。あなたはPXCustomSelectorAttributeの_Graphのフィールドを介して現在のグラフにアクセスすることができます。

protected PXGraph _Graph; 

のようなもの:キャッシュの現在の値にアクセスするための

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

_Graph.Caches[typeof(YourDAC)].Current 

をキャッシュを初期化中、Acumaticaフレームワークをすべてのフィールド属性に対して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

関連する問題