サンプル: Dynamics 365 コントロールでのオートコンプリート

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

サンプルの JavaScript コードを使用して、Dynamics 365 でのオートコンプリート エクスペリエンスを構成します。この構成では、Microsoft Dynamics 365 (オンラインおよび設置型) で導入された次のクライアント側 API を使用します。getValueキープレス メソッド、および オートコンプリートのメソッド

使用例

このトピックのサンプルの JavaScript コードをフォーム ライブラリとしてアカウント フォームに追加し、OnLoad イベント に対する suggestAccounts 関数をアカウント フォームに追加すると、アカウント フォームの [アカウント名] フィールドにオートコンプリート機能が構成されます。[アカウント名] フィールドに名前を入力すると、オートコンプリート ドロップダウン リストが表示されます。ドロップダウン リストの値は、このフィールドで押した文字に一致するようにフィルター処理されます。 ドロップダウン リストの値をクリックすると、その値が [アカウント名] フィールドに追加されます。

フォーム スクリプトを使用した自動完了エクスペリエンス

/* 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: 'Contoso Pharmaceuticals', code: 'A12' },
  { name: 'Contoso Suites', code: 'A13' },
  { name: 'Consolidated Messenger', code: 'A14' },
  { name: '​Fabrikam, Inc.', code: 'A15' },
  { name: 'Fabrikam Residences', code: 'A16' },
  { name: '​First Up Consultants', code: 'A17' },
  { name: 'Fourth Coffee', code: 'A18' },
  { name: 'Graphic Design Institute', code: 'A19' },
  { name: 'Humongous Insurance', code: 'A20' },
  { name: 'Lamna Healthcare Company', code: 'A21' },
  { name: 'Litware, Inc.', code: 'A22' },
  { name: 'Liberty Delightful Sinful Bakery & Cafe', code: 'A23' },
  { name: 'Lucerne Publishing', code: 'A24' },
  { name: 'Margie Travel', code: 'A25' },
  { name: '​Munson Pickles and Preserves Farm', code: 'A26' },
  { name: 'Nod Publishers', code: 'A27' },
  { name: 'Northwind Electric Cars', code: 'A28' },
  { name: 'Northwind Traders', code: 'A29' },
  { 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("https://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);    
}

関連項目

Xrm.Page.ui コントロール (クライアント側の参照)

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権