|
É 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 campoNa 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.
(Opcional) Na paleta Objeto, clique na guia Campo e digite uma legenda para o objeto na caixa Legenda.
Por exemplo, digite País.
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.
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.
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.
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.
(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.
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 primeiroCom a primeira lista suspensa selecionada, no Editor de scripts, selecione Alterar na lista Exibir.
Selecione JavaScript na lista Linguagem.
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 campoNa 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.
(Opcional) Na paleta Objeto, clique na guia Campo e digite uma legenda para o objeto na caixa Legenda.
Por exemplo, digite Estados/municípios.
Vincule o campo à fonte de dados.
Por exemplo, vincule o nó state à lista suspensa Estados/municípios.
Exiba o formulário na guia Visualizar PDF.
|
|
|