2017-02-14 7 views
1

操作のためのDynamics 365では、LedgerTransVoucherのinit()フォームメソッドのポストイベントハンドラを使用してtableIdを検索しようとしています。 :。操作のためのDynamics 365の拡張メソッドからelement.args()を取得することは可能ですか?

element.args()データセット()

私は1つ以上の場合に拡張する方法に大きなswitch文があります。 私はちょうど拡張クラスを作成して、これまで行ってきたが、私は本当に

[ExtensionOf(formStr(LedgerTransVoucher))] 
final class LedgerTransVoucher_Extension 
{ 
    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="args"></param> 
    [PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr (LedgerTransVoucher, init))] 
    public static void LedgerTransVoucher_Post_init(XppPrePostArgs args) 
    { 
     TableId sourceTable; 

     //sourceTable = element.args().dataset(); 
     //if(sourceTable == tableNum(myTable)) 
     //{ 
     // do something here 
     //} 
    } 
} 

を呼び出すために、拡張メソッドからデータを取得する方法がわからないもの:

sourceTable = element.args() .dataset();

もちろん動作しませんが、私は何とか拡張メソッドからデータを取得できるかどうかわかりません。

これはカスタマイズで非常に簡単に行うことができますが、私は拡張機能を使用するために必要なすべてをやりたいのです。

考えられる問題や考えられる回避策はありますか?

答えて

1

あなたはこのような何か試すことができます。

[PostHandlerFor(formStr(LedgerTransVoucher), formMethodStr (LedgerTransVoucher, init))] 
public static void LedgerTransVoucher_Post_init(XppPrePostArgs args) 
{ 
    TableId sourceTable; 
    FormRun element; 

    element = args.getThis(); 
    sourceTable = element.args().dataset(); 

    if(sourceTable == tableNum(myTable)) 
    { 
     do something here 
    } 
} 

または

[FormEventHandler(formStr(LedgerTransVoucher), FormEventType::Initialized)] 
public static void LedgerTransVoucher_OnInitialized(xFormRun sender, FormEventArgs e) 
{ 
    if(sender.args().dataset() == tableNum(myTable)) 
    { 
     do something here 
    } 
} 
関連する問題