2016-05-12 14 views
1

ここではシナリオです:Dynamics CRMの2016:オートコンプリート複数のフィールド

ユーザーが郵便番号を入力すると、オートコンプリートが表示されている必要があり、ユーザーが郵便番号を選択すると、都市のような他の分野と郡は自動的に記入する必要があります。

郵便番号、都市名、および郵便番号に関する情報は、JSONオブジェクト内にあります。

ユーザーがオートコンプリートリストをクリックしたときのイベントはありますか?

これを達成する方法を知っている人はいますか?

あなたの助けあなたが何かは、あなたが求めているものを行う必要はありませんボックスのCRMから

答えて

0

CRM 2016は、最近(ただし、携帯電話上では動作しません)あなたは、あなたが何をしようとしている正確に何を行うことができるように文字列フィールドに使用できるキープレスイベントを追加しました。ここSDK's exampleです:

/* Sample JavaScript code to demonstrate the auto-completion feature. 
    This sample configures the auto-complete feature for the "Account Name" 
    field in the account form. */ 

function suggestAccounts() { 

    // List of sample account names to suggest 
    accounts = [ 
    { name: 'A. Datum Corporation', code: 'A01' }, 
    { name: 'Adventure Works Cycles', code: 'A02' }, 
    { name: 'Alpine Ski House', code: 'A03' }, 
    { name: 'Bellows College', code: 'A04' }, 
    { name: 'Best For You Organics Company', code: 'A05' }, 
    { name: 'Blue Yonder Airlines', code: 'A06' }, 
    { name: 'City Power & Light', code: 'A07' }, 
    { name: 'Coho Vineyard', code: 'A08' }, 
    { name: 'Coho Winery', code: 'A09' }, 
    { name: 'Coho Vineyard & Winery', code: 'A10' }, 
    { name: 'Contoso, Ltd.', code: 'A11' }, 
    { name: 'Proseware, Inc.', code: 'A30' }, 
    { name: 'Relecloud', code: 'A31' }, 
    { name: 'School of Fine Art', code: 'A32' }, 
    { name: 'Southridge Video', code: 'A33' }, 
    { name: 'Tailspin Toys', code: 'A34' }, 
    { name: 'Trey Research', code: 'A35' }, 
    { name: 'The Phone Company', code: 'A36' }, 
    { name: 'VanArsdel, Ltd.', code: 'A37' }, 
    { name: 'Wide World Importers', code: 'A38' }, 
    { name: '​Wingtip Toys', code: 'A39' }, 
    { name: 'Woodgrove Bank', code: 'A40' }  
    ]; 

    var keyPressFcn = function (ext) { 
     try { 
      var userInput = Xrm.Page.getControl("name").getValue(); 
      resultSet = { 
       results: new Array(), 
       commands: { 
        id: "sp_commands", 
        label: "Learn More", 
        action: function() { 
         // Specify what you want to do when the user 
         // clicks the "Learn More" link at the bottom 
         // of the auto-completion list. 
         // For this sample, we are just opening a page 
         // that provides information on working with 
         // accounts in CRM. 
         window.open("http://www.microsoft.com/en-us/dynamics/crm-customer-center/create-or-edit-an-account.aspx"); 
        } 
       } 
      }; 

      var userInputLowerCase = userInput.toLowerCase(); 
      for (i = 0; i < accounts.length; i++) { 
       if (userInputLowerCase === accounts[i].name.substring(0, userInputLowerCase.length).toLowerCase()) { 
        resultSet.results.push({ 
         id: i, 
         fields: [accounts[i].name] 
        }); 
       } 
       if (resultSet.results.length >= 10) break; 
      } 

      if (resultSet.results.length > 0) { 
       ext.getEventSource().showAutoComplete(resultSet); 
      } else { 
       ext.getEventSource().hideAutoComplete(); 
      } 
     } catch (e) { 
      // Handle any exceptions. In the sample code, 
      // we are just displaying the exception, if any. 
      console.log(e); 
     } 
    }; 

    Xrm.Page.getControl("name").addOnKeyPress(keyPressFcn);  
} 

その後、ユーザーの選択を処理するためaddOnChange eventを使用することができます。

+0

あなたの答えをありがとう。私はこのスクリプトを使用していることを忘れていました。ユーザーがオートコンプリートリストの項目をクリックしたときにイベントが発生しますか?クリックしたアイテムを取得して他のフィールドに入力するには? – bidou88

+1

@ bidou88私の更新を見る – Polshgiant

0

のおかげで、しかし、あなたはそれを行うための3つの可能性があります。

1郵便番号のエンティティを作成し、内部に情報を入力します。フォーム上でルックアップを作成した後は、サポートされている方法で行うことを忘れないでください。

2フィールドのイベントの変更では、メソッドjsが自動的に入力されますが、このフィールドは完全な書き込みが必要です。スクリプトを使用して一致を取得する必要があります。

3これはサポートされていませんが、DOMを操作して、フィールドにイベントを自動的に入力するjsスクリプトを置くことができます。

乾杯

+0

おかげでホルヘ:-)この機能を使用してマッチングを見つけることができます私の配列に入れて、他のフィールドに値を設定しますか? – bidou88

+1

はい、これはまさにあなたの言うことです。あなたの関数をトリガーして一致を得るonchangeイベントでは、自動であなたの結果を取り込むことができます。 –

2

私は、Polshgiantが共有したコード例を使用してシナリオをテストし、Jorge Cunhaの示唆したようにonchangeイベントを属性に追加しました。

私のテストでは、キーストロークだけがonchangeイベントをトリガーすることが示されています。 オートコンプリート値を選択すると、onchangeは起動されません。

私はこの質問に対してサポートされている解決策を見ません。

しかし、私は同じ機能が必要なので、他の人が私を間違っていると思うことを願っています。

編集5月17日: 新しいテストは本日のonchangeイベントが呼び出されたことを示しているが、その

var newValue = Xrm.Page.getControl(control).getValue(); 

は入力された値ではなく、自動補完値を取得します。しかし

var newValue = Xrm.Page.getControl(control).getAttribute().getValue(); 

が私にオートコンプリート選択された値を与える

は、これによって私は今、私は理解している場合(法2)、私はのonchangeイベントを持つフィールド(郵便番号)の値を取得しなければならない、

関連する問題