次の方法で共有


サンプル: データ パラメーターを使用した Web リソースへの複数の値の引き渡し

 

公開日: 2016年11月

対象: Dynamics CRM 2015

Web ページ (HTML) または Silverlight Web リソース ページは、data という単一のカスタム パラメーターのみ受け取ることができます。 data パラメーターで複数の値を渡すには、パラメーターをエンコードし、ページ内でパラメーターをデコードする必要があります。

ここに示すページは、単一のパラメーターで追加の値を渡し、Web リソースでそれらを処理する手法を表します。 このページは SDK ダウンロード ファイル (sdk\samplecode\js\webresources\showdataparams.htm) として提供されています。

HTML Web リソースの例

下記の HTML コードは、次の 3 つの関数を定義するスクリプトを含む Web ページ (HTML) Web リソースを表します。

  • getDataParam: body.onload イベントから呼び出され、ページに渡されたクエリ文字列パラメーターを取得し、data という名前のパラメーターを探します。

  • parseDataValue: getDataParam から data パラメーターを受け取り、data パラメーターで渡された値を表示するための DHTML テーブルを構築します。

    注意

    クエリ文字列に含まれるすべての文字は、encodeURIComponent メソッドを使用してエンコードされます。 この関数は、JScriptdecodeURIComponent メソッドを使用して、渡された値をデコードします。

  • noParams: ページにパラメーターが渡されていない場合にメッセージを表示します。

<!DOCTYPE html >
<html lang="en-us">
<head>
 <title>Show Data Parameters Page</title>
 <style type="text/css">
  body
  {
   font-family: Segoe UI, Tahoma, Arial;
   background-color: #d6e8ff;
  }
  tbody
  {
   background-color: white;
  }
  th
  {
   background-color: black;
   color: White;
  }
 </style>
 <script type="text/javascript">
  document.onreadystatechange = function () {
   if (document.readyState == "complete") {
    getDataParam();
   }
  }

  function getDataParam() {
   //Get the any query string parameters and load them
   //into the vals array

   var vals = new Array();
   if (location.search != "") {
    vals = location.search.substr(1).split("&");
    for (var i in vals) {
     vals[i] = vals[i].replace(/\+/g, " ").split("=");
    }
    //look for the parameter named 'data'
    var found = false;
    for (var i in vals) {
     if (vals[i][0].toLowerCase() == "data") {
      parseDataValue(vals[i][1]);
      found = true;
      break;
     }
    }
    if (!found)
    { noParams(); }
   }
   else {
    noParams();
   }
  }

  function parseDataValue(datavalue) {
   if (datavalue != "") {
    var vals = new Array();

    var message = document.createElement("p");
    setText(message, "These are the data parameters values that were passed to this page:");
    document.body.appendChild(message);

    vals = decodeURIComponent(datavalue).split("&");
    for (var i in vals) {
     vals[i] = vals[i].replace(/\+/g, " ").split("=");
    }

    //Create a table and header using the DOM
    var oTable = document.createElement("table");
    var oTHead = document.createElement("thead");
    var oTHeadTR = document.createElement("tr");
    var oTHeadTRTH1 = document.createElement("th");
    setText(oTHeadTRTH1, "Parameter");
    var oTHeadTRTH2 = document.createElement("th");
    setText(oTHeadTRTH2, "Value");
    oTHeadTR.appendChild(oTHeadTRTH1);
    oTHeadTR.appendChild(oTHeadTRTH2);
    oTHead.appendChild(oTHeadTR);
    oTable.appendChild(oTHead);
    var oTBody = document.createElement("tbody");
    //Loop through vals and create rows for the table
    for (var i in vals) {
     var oTRow = document.createElement("tr");
     var oTRowTD1 = document.createElement("td");
     setText(oTRowTD1, vals[i][0]);
     var oTRowTD2 = document.createElement("td");
     setText(oTRowTD2, vals[i][1]);

     oTRow.appendChild(oTRowTD1);
     oTRow.appendChild(oTRowTD2);
     oTBody.appendChild(oTRow);
    }

    oTable.appendChild(oTBody);
    document.body.appendChild(oTable);
   }
   else {
    noParams();
   }
  }

  function noParams() {
   var message = document.createElement("p");
   setText(message, "No data parameter was passed to this page");


   document.body.appendChild(message);
  }
  //Added for cross browser support.
  function setText(element, text) {
   if (typeof element.innerText != "undefined") {
    element.innerText = text;
   }
   else {
    element.textContent = text;
   }

  }
 </script>
</head>
<body>
</body>
</html>

このページの使用方法

  1. サンプル コードを使用して、"new_/ShowDataParams.htm" という Web ページ Web リソースを作成します。

    渡すパラメーターは first=First Value&second=Second Value&third=Third Value です。

    注意

    フォーム エディターの [Web リソースのプロパティ] ダイアログボックスを使用して静的パラメーターを追加する場合は、パラメーターをエンコードせずに [Custom Parameter(data)] フィールドに貼り付けることができます。 これらの値は自動的にエンコードされますが、ページ内でデコードして値を抽出する必要はあります。

  2. コードで生成される動的な値の場合は、パラメーターで encodeURIComponent メソッドを使用します。 エンコードされる値は次のようになります。

    first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value

    ページを開き、エンコードされたパラメーターを data パラメーターの値として渡します。

    http://<server name>/WebResources/new_/ShowDataParams.htm?Data=first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value
    

    注意

    Web リソースをフォームに追加し、エンコードされていないパラメーターを [Custom Parameters(data)] フィールドに貼り付けた場合は、フォームをプレビューできます。

  3. new_/ShowDataParams.htm により、動的に生成されたテーブルが表示されます。

    パラメーター

    第 1

    First Value

    第 2

    Second Value

    第 3

    Third Value

動作

データ クエリ文字列パラメーター値に埋め込まれた値にアクセスするには、Web ページ Web リソースで、data パラメーターの値を抽出し、コードを使用して文字列を配列に分割して、名前と値の各ペアに個別にアクセスできます。

ページが読み込まれると、getDataParam 関数が呼び出されます。 この関数は、data パラメーターを識別し、値を ParseDataValue 関数に渡します。 data パラメーターが見つからない場合、noParams 関数はテーブルではなくページにメッセージを追加します。

ParseDataValue 関数は、getDataParam と同様のロジックを使用してカスタム パラメーター区切り文字を特定し、名前と値のペアの配列を作成します。 次に、テーブルを生成し、空の document.body に追加します。

関連項目

Microsoft Dynamics CRM 2015 の Web リソース
サンプル: Web リソースとしてファイルをインポート
Webpage (HTML) の Web リソース
Silverlight (XAP) の Web リソース

© 2017 Microsoft. All rights reserved. 著作権