Esempio: passare più valori a una risorsa Web tramite il parametro dati

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Una pagina di risorsa Web (HTML) può solo accettare un parametro personalizzato singolo denominato data. Per passare più di un valore nel parametro dati, è necessario codificare i parametri e decodificare i parametri nella pagina.

Nella pagina di seguito riportata viene rappresentata una tecnica per passare i valori aggiuntivi in un parametro singolo e quindi elaborarli nella risorsa Web. Questa pagina è disponibile in file scaricabili per SDK all'indirizzo sdk\samplecode\js\webresources\showdataparams.htm

Risorsa Web HTML di esempio

Il codice HTML di seguito riportato rappresenta una risorsa Web (HTML) della pagina Web che include uno script che definisce tre funzioni:

  • getDataParam: chiamato dall'evento body.onload, questa funzione recupera i parametri della stringa di query passati alla pagina e ne individua uno denominato data.

  • parseDataValue: riceve il parametro di dati getDataParam e genera una tabella DHTML per visualizzare i valori passati nel parametro data.

    Nota

    Tutti i caratteri inclusi nella stringa di query verranno codificati utilizzando il metodo encodeURIComponent. Questa funzione utilizza il JavaScriptmetodo decodeURIComponent per decodificare i valori passati.

  • noParams: visualizza un messaggio quando non viene passato alcun parametro alla 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>

Utilizzo di questa pagina

  1. Creare una risorsa Web della pagina Web denominata "new_/ShowDataParams.htm" con il codice di esempio.

    I parametri da passare sono: first=First Value&second=Second Value&third=Third Value

    Nota

    Se si stanno aggiungendo i parametri statici tramite la finestra di dialogo Proprietà della risorsa Web dall'editor di moduli, è possibile semplicemente incollare i parametri senza codificarli nel campo Custom Parameter(data). Tali valori verranno codificati automaticamente, ma è tuttavia necessario decodificarli e estrarre i valori nella pagina.

  2. Per i valori dinamici generati nel codice, utilizzare il metodo encodeURIComponent nei parametri. I valori codificati devono essere:

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

    Aprire la pagina che passa i parametri codificati come valore del parametro dati:

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

    Nota

    Se si è aggiunta la risorsa Web a un modulo e si sono incollati i parametri non codificati nel campo Custom Parameters(data), è possibile solo visualizzare in anteprima e il modulo.

  3. In new_/ShowDataParams.htm verrà visualizzata una tabella generata dinamicamente

    Parametro

    Valore

    prima

    Primo valore

    secondo/a

    Secondo valore

    terza

    Terzo valore

Funzionamento

Per accedere ai valori incorporati nel valore del parametro della stringa di query di dati, è possibile estrarre il valore del parametro dati nella risorsa Web della pagina Web e quindi utilizzare il codice per dividere la stringa in una matrice in modo da poter accedere singolarmente a ogni coppia nome-valore.

Dopo il caricamento della pagina, viene richiamata la funzione getDataParam. Questa funzione identifica semplicemente il parametro di dati e passa il valore alla funzione ParseDataValue. Se nessun parametro di dati è stato rilevato, la funzione noParams aggiungerà un messaggio alla pagina al posto della tabella.

La funzione di ParseDataValue utilizza una logica simile rilevata in getDataParam per individuare i delimitatori dei parametri personalizzati per creare un array di coppie nome-valore. Quindi genera una tabella e la aggiunge a document.body che in caso contrario sarebbe vuoto.

Vedere anche

Risorse Web per Microsoft Dynamics 365
Esempio: importare file come risorse Web
Risorse Web pagine Web (HTML)
Risorse Web Silverlight (XAP)

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright