2017-05-16 15 views
0

私は専門家がこの質問を笑ってくれることを知っていますが、私は本当に苦労しています。このスニペットを見てください。私はCRMとJavaScriptを初めて熟知しています。Dynamics CRM 2016の機能の検索

私は検索リストから何を選んでも問題ではないので、警告がポップアップします。私は "不完全な"と "完全な"が一致していないが、まだ警告を発している場所を見ることができます。

この問題に対処するためにODATAクエリを記述する必要はありますか?

Function MPMain_OnChange() { 
    try { 
     //get the work order status. 
     var wostatus = new Array(); 
     wostatus =Xrm.Page.getAttribute("workorderstatus").getValue(); 

     if (wostatus !=null) { 
      var name = wostatus[0].name; 

      if (name =="Completed") { 
       alert("Order Complete"); 
      } 
     } 
    } catch { 
     //there is an error. 
    } 
} 

答えて

1

CRM 2016では、あなたはgetSelectedOption()または単にgetText()使用することができます。ドキュメントはhereです。あなたのコードでは、次のように記述します。

var workOrderStatus = Xrm.Page.getAttribute("wordorderstatus").getSelectedOption(); 

をこれは、例えば{ text: 'Complete', value: 1 }ため、テキストプロパティを持つオブジェクトを返します。

私はDynamics CRM 2016開発環境でテストして、両方とも動作しています。ここに私のChromeブラウザのコンソールウィンドウからのスクリーンショットです:

enter image description here

あなたは、選択したオプションのテキストを評価し、警報を発することができる必要があります:私は===ない==を使用しました

if (workOrderStatus === 'Completed') { 
    alert('Order Complete.); 
} 

お知らせ。詳細については、this SO answerを参照してください。

これが機能しない場合は、デバッグを試みる必要があります。ブラウザでF12キーを押し、スクリプトを探して、関数の先頭にブレークポイントを入力します。あなたは困難これを行うことがある場合は、あなたの関数の先頭に以下の行を入れて(そして、あなたの変更を公開)、F12キーを押しトップは、あなたのデベロッパーコンソールを開き、onChangeイベントをトリガ:

debugger; 
+0

お返事ありがとうございました。私はデバッガを使用しています。狂ったことは、 "Completed"から "Awaiting"から "Cancel"への変数の値の変化を見ることができますが、If文はまだ起動します。変数をIFに渡すと、「Completed」と一致しない場合でも選択した項目が表示されます。私はあなたの解決策を試し、あなたに感謝し、解決策としてチェックします。 –

1

は再書い全部。これは機能します。すべてのJavaScriptライブラリ項目がDynamics CRMの内部で使用できるわけではありません(例:getSelectedOption)。

function MPMain_OnChange() { 
    try { 
     // Get the work order status. 
     var entityLabel, lookupFieldObject; 
     lookupFieldObject = Xrm.Page.data.entity.attributes.get('worksorderstatus'); 

     if (lookupFieldObject.getValue() != null) { 
      entityLabel = lookupFieldObject.getValue()[0].name; 

      if (entityLabel != null && entityLabel == 'Completed') 
       Xrm.Page.getAttribute('datecompleted').setValue(new Date()); 
     } 
    } 
    catch (error) { 

    } 
} 

このようになる可能性がある他の人のための共有。ありがとうございました!

+0

うれしいことです。しかし、 'getSelectedOption'と' getText'は 'JavaScriptライブラリ項目'ではなく、Xrm.Page名前空間で定義された関数で、_only_はDynamics CRM内で動作します。 [こちらはMicrosoftのドキュメントへのリンクです](https://msdn.microsoft.com/en-us/library/gg334409.aspx#BKMK_getText)。 –

関連する問題