Preencher dinamicamente um segundo campo após o preenchimento do primeiro

É possível preencher dinamicamente um segundo campo depois de preencher o primeiro usando um script. Por exemplo, você pode ter uma lista suspensa que mostre aos usuários uma lista de países. Depois que um usuário seleciona um país, a segunda lista mostra os estados ou municípios desse país.

Por exemplo, o arquivo XML de amostra ao qual você se conecta poderia ter o seguinte definido:

<MyData> 
      <country/> 
      <countries> 
         <item uiname="United States" token="US"/> 
         <item uiname="Vietnam" token="SRV"/> 
      </countries> 
      <state/> 
      <US> 
         <item>California</item> 
         <item>New York</item> 
         <item>Texas</item> 
      </US> 
      <SRV> 
         <item>An Giang</item> 
         <item>Bac Giang</item> 
         <item>Bac Kan</item> 
      </SRV> 
</MyData>

Por exemplo, depois que você seleciona Vietnã na primeira lista suspensa, os itens relacionados na lista Estados/municípios mostra somente os que se aplicam a Vietnã.

Antes de executar essa tarefa, verifique se as seguintes configurações estão aplicadas:

Para configurar o primeiro campo

  1. Na paleta Biblioteca de objetos, clique na categoria Padrão e arraste uma Lista suspensa ou uma Caixa de listagem até o design de formulário.

    Por exemplo, insira uma Lista suspensa.

  2. (Opcional) Na paleta Objeto, clique na guia Campo e digite uma legenda para o objeto na caixa Legenda.

    Por exemplo, digite País.

  3. Conclua uma destas ações:

    • Clique no rótulo ativo Itens de lista, na guia Campo da paleta Objeto.

    • Clique no rótulo ativo Especificar valores de item, na guia Vínculo da paleta Objeto.

  4. Selecione a conexão de dados.

    Nota: Se você ainda não estiver conectado a uma fonte de dados, Vínculo de dados padrão será a única seleção disponível na lista Conexão de dados.
  5. Clique no triângulo ao lado da caixa Itens e selecione um vínculo.

    O vínculo selecionado deve ser um valor de dados repetitivo ou um grupo para que a lista suspensa ou a caixa de listagem mostre mais de um item.

    Por exemplo, selecione countries > item.

    A seguinte string é exibida na caixa Itens:

    $record.countries.item[*]

    Digite essa string na caixa Itens em vez de selecioná-la.
    Nota: Em conexões de dados OLEDB, a caixa Itens não fica disponível. Use as caixas Texto do item e Valor do item para selecionar as colunas de banco de dados a serem usadas para preencher a lista.
  6. Para mostrar um nome de item amigável em tempo de execução, clique no triângulo ao lado da caixa Texto do item e selecione um vínculo.

    Por exemplo, selecione @uiname para mostrar Estados Unidos.

  7. (Opcional) Para salvar um valor diferente do rótulo Texto do item na fonte de dados, clique no triângulo ao lado da caixa Valor do item e selecione um vínculo.

    Por exemplo, selecione @token para salvar US no arquivo de dados.

  8. Clique em OK.

    Depois que o vínculo é definido, um pequeno ícone de link é exibido com o rótulo ativo.

Para configurar o script que preenche o segundo campo dinamicamente depois de preencher o primeiro

  1. Com a primeira lista suspensa selecionada, no Editor de scripts, selecione Alterar na lista Exibir.

  2. Selecione JavaScript na lista Linguagem.

  3. Digite o seguinte script:

    var tempString = "xfa.record." + this.boundItem(xfa.event.newText); 
    var oItems = xfa.resolveNode(tempString); 
    var nItemsLength = oItems.nodes.length; 
     
    DropDownList2.clearItems(); 
     
    for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++) { 
          DropDownList2.addItem(oItems.nodes.item(nItemCount).value); 
    }

    Script

    Descrição

    tempString

    Especifica a string para xfa.record. Por exemplo, se Estados Unidos for selecionado, o xfa.record se tornará xfa.record.US.

    this.boundItem

    Um método de objeto de lista que converte do nome amigável para a string de valor ou de token. Por exemplo, quando é selecionada a opção Estados Unidos, é submetido EUA.

    xfa.event.newText

    Retorna o conteúdo do novo texto do evento Change da lista. Por exemplo, quando é selecionada a opção Estados Unidos, é submetido Estados Unidos.

    var nItemsLength = oItems.nodes.length;

    Consulta o número de elementos filho de <US> (ou <SRV>), que é o número de filhos de <item>.

    DropDownList2.clearItems();

    Remove todos os itens existentes na segunda lista suspensa.

    for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++)

    Consultas para cada <item> filho de <US> (ou <SRV>).

    DropDownList2.addItem(oItems.nodes.item(nItemCount).value);

    Obtém o valor de texto do filho <item> indicado pelo índice nItemCount e adiciona esse valor um novo item à segunda lista suspensa.

Para configurar o segundo campo

  1. Na paleta Biblioteca de objetos, clique na categoria Padrão e arraste uma Lista suspensa ou uma Caixa de listagem até o design de formulário.

    Por exemplo, insira uma Lista suspensa.

  2. (Opcional) Na paleta Objeto, clique na guia Campo e digite uma legenda para o objeto na caixa Legenda.

    Por exemplo, digite Estados/municípios.

  3. Vincule o campo à fonte de dados.

    Por exemplo, vincule o nó state à lista suspensa Estados/municípios.

  4. Exiba o formulário na guia Visualizar PDF.