Amostra: Transmitir vários valores para um recurso Web através do parâmetro de dados
Publicado: janeiro de 2017
Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Uma página de recurso da Web (HTML) apenas pode aceitar um parâmetro personalizado único chamado data. Para passar mais de um valor dentro do parâmetro de dados, é necessário codificar os parâmetros e descodificar os definições na sua página.
A página aqui representa uma técnica para passar valores adicionais em um único parâmetro e processá-los no recurso da Web. Esta página está disponível nos arquivos de download para o SDK no sdk\samplecode\js\webresources\showdataparams.htm
Recurso da Web HTML de amostra
O código HTML abaixo representa um recurso da Web da página da Web (HTML) que inclui um script que define três funções:
getDataParam: Chamado do evento body.onload, essa função recupera qualquer parâmetro da cadeia de consulta transmitido para a página e localiza um data nomeado.
parseDataValue: Recebe o parâmetro de dados do getDataParam e criar uma tabela DHTML para exibir qualquer valor transmitido dentro do parâmetro data.
Observação
Todos os caracteres incluídos na cadeia de consulta serão codificados usando o método encodeURIComponent. Essa função usa o JavaScriptmétodo decodeURIComponent para decodificar os valores transmitidos.
noParams: Exibe uma mensagem quando nenhum parâmetro é transmitido para a página.
<!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>
Usando esta página
Cria um recurso da Web de página da Web chamado "new_/ShowDataParams.htm" usando o código de amostra.
Os parâmetros que você deseja transmitir são: first=First Value&second=Second Value&third=Third Value
Observação
Se você estiver adicionando parâmetros estáticos usando a caixa de diálogo Propriedades do Recurso da Web no editor de formulários, é possível apenas colar os parâmetros sem codificá-los no campo Custom Parameter(data). Esses valores serão codificados para você, mas você ainda precisa decodificá-los e extrair os valores na página.
Para valores dinâmicos gerados no código, use o método encodeURIComponent nos parâmetros. Os valores codificados devem ser:
first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value
Abra a página transmitindo os parâmetros codificados como o valor do parâmetro de dados:
http://<server name>/WebResources/new_/ShowDataParams.htm?Data=first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value
Observação
Se você tiver adicionado o recurso da Web a um formulário e colado os parâmetros não codificados no campo Custom Parameters(data), é possível apenas visualizar o formulário.
O new_/ShowDataParams.htm exibirá uma tabela gerada dinamicamente:
Parâmetro
Valor
Primeiro
Primeiro Valor
Segundo
Segundo Valor
Terceiro
Terceiro Valor
Como funciona
Para acessar os valores inseridos no valor de parâmetro de cadeia de consulta de dados, no recurso da Web da página da Web, é possível extrair o valor do parâmetro de dados e usar o código para dividir a cadeia de caracteres em uma matriz de modo que você possa acessar cada par de valor de nome individualmente.
Quando a página carrega, a função getDataParam é chamada. Esta função identifica apenas o parâmetro de dados e transmite o valor para a função ParseDataValue. Se nenhum parâmetro de dados for encontrado, a função noParams adicionará uma mensagem na página no local da tabela.
A função ParseDataValue usa lógica semelhante encontrada em getDataParam para localizar os delimitadores de parâmetros personalizados para criar uma matriz de pares de valores de nome. Gera uma tabela e anexa no document.body vazio.
Confira Também
Recursos da Web do Microsoft Dynamics 365
Exemplo: Importar arquivos como recursos da Web
Recursos da Web de página da Web (HTML)
Recursos da Web do Silverlight (XAP)
Microsoft Dynamics 365
© 2017 Microsoft. Todos os direitos reservados. Direitos autorais