Del via


Eksempel: Send flere værdier til en webressource via dataparameteren

 

Udgivet: januar 2017

Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

En (HTML) webressourceside kan kun acceptere en enkelt brugerdefineret parameter kaldet data. Hvis du vil overføre mere end én værdi i dataparameteren, skal du kode parametrene og afkode parametrene på din side.

Siden her repræsenterer en teknik til at overføre ekstra værdier inden for en enkelt parameter og derefter behandle dem i din webressource. Denne side er tilgængelig i de filer, der kan downloades til SDK'et på sdk\samplecode\js\webresources\showdataparams.htm

Eksempel på HTML-webressource

HTML-koden nedenfor repræsenterer en webressource til en webside (HTML), der indeholder et script, som definerer de tre funktioner:

  • getDataParam: Denne funktion, som kaldes fra hændelsen body.onload, henter alle parametre for forespørgselsstrenge, der er overført til siden, og finder en med navnet data.

  • parseDataValue: Modtager dataparameteren fra getDataParam og opbygger en DHTML-tabel, der viser alle værdier, der overføres inden for data-parameteren.

    Bemærk

    Alle tegn, der findes i forespørgselsstrengen, kodes ved hjælp af encodeURIComponent-metoden. Denne funktion bruger JavaScriptdecodeURIComponent-metoden til at afkode de værdier, der overføres.

  • noParams: Viser en meddelelse, når der ikke overføres nogen parametre til siden.

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

Brug af denne side

  1. Opret en webressource til en webside med navnet "new_/ShowDataParams.htm" ved hjælp af eksempelkoden.

    De parametre, du skal overføre, er: first=First Value&second=Second Value&third=Third Value

    Bemærk

    Hvis du tilføjer statiske parametre ved hjælp af dialogboksen Egenskaber for webressource fra formulareditoren, kan du blot indsætte parametrene i feltet Custom Parameter(data) uden at kode dem. Disse værdier bliver kodet for dig, men du skal stadig afkode dem og udtrække værdierne på din side.

  2. Til dynamiske værdier, der genereres i kode, skal du bruge encodeURIComponent-metoden på parametrene. De kodede værdier skal være:

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

    Åbn siden, og overfør de kodede parametre som værdien af dataparameteren:

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

    Bemærk

    Hvis du har føjet webressourcen til en formular og har indsat de ikke-kodede parametre i feltet Custom Parameters(data), kan du kun få vist formularen.

  3. new_/ShowDataParams.htm viser en dynamisk genereret tabel:

    Parameter

    Værdi

    Første

    Første værdi

    Anden

    Anden værdi

    Tredje

    Tredje værdi

Sådan fungerer det

Du kan få adgang til de værdier, der er indlejret i parameterværdien for dataforespørgselsstrengen, ved at udtrække værdien af dataparameteren i webressourcen for din webside og derefter bruge kode til at opdele strengen i en matrix, så du kan få adgang til hvert værdipar for navne individuelt.

Når siden indlæses, kaldes funktion getDataParam. Denne funktion identificerer dataparameteren og overfører værdien til funktionen ParseDataValue. Hvis der ikke findes nogen dataparameter, tilføjer funktionen noParams en meddelelse på siden i stedet for tabellen.

Funktionen ParseDataValue bruger lignende logik, som findes i getDataParam, til at finde de brugerdefinerede parameterafgrænsere for at oprette en matrix af navneværdipar. Derefter opretter den en tabel og føjer den til den tomme document.body.

Se også

Webressourcer til Microsoft Dynamics 365
Eksempel: Importer filer som webressourcer
Webressourcer for webside (HTML)
Silverlight-webressourcer (XAP )

Microsoft Dynamics 365

© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret