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