2016-05-04 9 views
0

私は参照フィールドproductsを別の参照フィールドeditorial(私の会社は教科書を販売している)でフィルタリングしようとしています。検索オブジェクトの値をFetchXmlクエリに渡すにはどうすればよいですか?

ルックアップオブジェクトから値を取得する方法は分かっていますが、fetchXmlクエリステートメントに値を渡す方法がわかりません。

function preFilterLookup() 
{ 
    Xrm.Page.getControl("new_editorialsearch").addPreSearch(function() { 

     var ediObject = Xrm.Page.getAttribute("new_editorialsearch").getValue(); 

     // Get the lookup Object, and extract the Value (ID and Text) 
     if(ediObject != null) 
     { 
      var ediTextValue = ediObject[0].name; 
      var ediID = ediObject[0].id; 

      // Filter products by editorial 
      fetchXml = "<filter type='and'><condition attribute='name' operator='eq' value='" + ediTextValue + "' /></filter>"; 

      // Apply the filter to the field 
      Xrm.Page.getControl("new_engpro").addCustomFilter(fetchXml); 
     }   
    }); 
} 

私はCRMが私の関数が定義されていない、と私は構文エラーを見ることができない私に言って続けているので、私は何か間違ったことをやっている知っています。

誰かがfetchXmlステートメントにオブジェクト名とIDを渡す正しい方法を教えていただけますか?

+0

関数を取得していない場合は、定義されていないエラーですが、これはおそらくフェッチの問題ではなく、 'preFilterLookup'を呼び出す方法の問題です。関数の先頭に 'console.log(" running ");'文を入れて、実際に実行されていることを確認してください。それがあなたを困惑させることがない場合は、あなたが受け取っているエラーメッセージを提供してください。また、イベントを配線する方法もお知らせください。 – Polshgiant

+0

元々は 'onLoad'でしたが、 'editorial'のために 'onChange'に設定しましたが、それは私にエラーを与えませんでした。 'console.log( "running")'に**ランニング**が表示され、機能が実行されています。私の 'fetchXml'は正しいですか?データを正しく渡していますか? –

+0

'onLoad'というエラーは表示されなくなりましたが、フィルタリングされません。私は 'if'ステートメントの中にログステートメントを入れて、何も表示していません。フィールドに値があっても、 'if'ステートメントは 'null'を返しているようです。私は何か間違っているのですか? –

答えて

0

addCustomFilterは、同じコントロールのaddPreSearchイベントからのみ呼び出すことができます。したがってaddPreSearchnew_editorialsearchに呼び出す代わりにnew_engproに電話してください。