Delen via


Voorbeeld: Meerdere waarden aan een webresource doorgeven met de gegevensparameter

 

Gepubliceerd: november 2016

Is van toepassing op: Dynamics CRM 2015

Een webpagina (HTML) of Silverlight-webresourcepagina kan slechts één aangepaste parameter genaamd data accepteren. Als u meer dan één waarde in de gegevensparameter wilt doorgeven, moet u de parameters in uw pagina coderen en decoderen.

De pagina hier vertegenwoordigt een methode om de extra waarden binnen één parameter door te geven en ze vervolgens te verwerken in uw webresource. Deze pagina is beschikbaar in de downloadbare bestanden voor de SDK op sdk\samplecode\js\webresources\showdataparams.htm

Voorbeeld van HTML-webresource

De onderstaande HTML-code vertegenwoordigt een webresource webpagina (HTML) die een script bevat dat drie functies definieert:

  • getDataParam: aangeroepen vanuit de gebeurtenis body.onload. Deze functie haalt querytekenreeksparameters op die aan de pagina worden doorgegeven en zoekt er een met de naam data.

  • parseDataValue: ontvangt de gegevensparameter van getDataParam en maakt een DHTML-tabel om waarden weer te geven die in de parameter data worden doorgegeven.

    Notitie

    Alle tekens in de querytekenreeks worden gecodeerd met de methode encodeURIComponent. Deze functie gebruikt de JScriptmethode decodeURIComponent om de doorgegeven waarden te ontsleutelen.

  • noParams: geeft een bericht weer als er geen parameters worden doorgegeven aan de pagina.

<!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>

Deze pagina gebruiken

  1. Maak een webresource webpagina met de naam "new_/ShowDataParams.htm", met behulp van de voorbeeldcode.

    De parameters die u wilt doorgeven zijn: first=First Value&second=Second Value&third=Third Value

    Notitie

    Als u statische parameters toevoegt met behulp van het dialoogvenster Eigenschappen van webresource van de formuliereneditor, kunt u de parameters eenvoudig zonder ze te coderen plakken in het veld Custom Parameter(data). Deze waarden worden voor u gecodeerd, maar u moet ze nog wel decoderen en op uw pagina uitpakken.

  2. Voor dynamische in code gegenereerde waarden gebruikt u de methode encodeURIComponent voor de parameters. De gecodeerde waarden moeten zijn:

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

    Open de pagina die de gecodeerde parameters doorgeeft als de waarde van de gegevensparameter:

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

    Notitie

    Als u de webresource aan een formulier hebt toegevoegd en de niet-gecodeerde parameters in het veld Custom Parameters(data) hebt geplakt, kunt u een voorbeeld van het formulier bekijken.

  3. new_/ShowDataParams.htm geeft een dynamisch gegenereerde tabel weer:

    Parameter

    Waarde

    Eerste

    Eerste waarde

    Tweede

    Tweede waarde

    Derde

    Derde waarde

Hoe het werkt

Als u toegang wilt krijgen tot de waarden die in de queryparameterwaarde zijn ingesloten, kunt u de waarde van de gegevensparameter in uw webpagina webresource uitpakken en vervolgens code gebruiken om de tekenreeks in een matrix op te splitsen, zodat u toegang tot elk naamwaardepaar afzonderlijk hebt.

Wanneer de pagina wordt geladen, wordt de functie getDataParam aangeroepen. Deze functie geeft alleen de gegevensparameter aan en geeft de waarde door aan de functie ParseDataValue. Als er geen gegevensparameter wordt gevonden, voegt de functie noParams een bericht in plaats van de tabel aan de pagina toe.

De functie ParseDataValue gebruikt soortgelijke logica uit getDataParam om de scheidingstekens van de aangepaste parameter te vinden om een matrix met naamwaardeparen te maken. Vervolgens wordt een tabel gegenereerd en toegevoegd aan het verder lege document.body.

Zie ook

Webresources voor Microsoft Dynamics CRM 2015
Voorbeeld: Importbestanden gebruiken als webresources
Webpagina (HTML) webresources
Silverlight-webresources (XAP)

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht