Amostra: Transmitir vários valores para um recurso Web através do parâmetro de dados

 

Publicado: novembro de 2016

Aplicável a: Dynamics CRM 2015

Uma página da Web (HTML) ou página da Web de recurso do Silverlight pode aceitar apenas um único parâmetro personalizado 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 JScriptmé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

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

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

  3. 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 CRM 2015
Exemplo: Importar arquivos como recursos da Web
Recursos da Web de página da Web (HTML)
Recursos da Web do Silverlight (XAP)

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais