エクスポート (0) 印刷
すべて展開

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

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 テーブルを構築します。

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

  • 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 です。

    noteメモ
    フォーム エディターの [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
    
    noteメモ
    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 2011 および Microsoft Dynamics CRM Online
このトピックについて Microsoft にコメントを送信する
© 2012 Microsoft Corporation. All rights reserved.

コミュニティの追加

表示:
© 2014 Microsoft