|
È possibile compilare in modo dinamico un secondo campo dopo la compilazione del primo mediante l'uso di script. Ad esempio, un elenco a discesa può mostrare agli utenti un elenco di Paesi. Dopo che un utente seleziona un paese, il secondo elenco può mostrare le regioni o le province del paese.
Il file XML di esempio a cui si ci collega può presentare dati definiti di questo tipo:
<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>
Ad esempio, dopo che è stato selezionato Vietnam dall'elenco a discesa, gli elementi nell'elenco Regioni/Province mostrano solo quelli che si applicano a Vietnam.
A questo scopo, è innanzitutto necessario verificare di avere eseguito le operazioni seguenti:
Per impostare il primo campo:Nella palette Libreria oggetto, fare clic sulla categoria Standard e trascinare un Elenco a discesa o una Casella di riepilogo nella struttura del modulo.
Ad esempio, inserire un Elenco a discesa.
(Facoltativo) Nella palette Oggetto, fare clic sulla scheda Campo e inserire una didascalia per l'oggetto nella casella Didascalia.
Ad esempio, digitare Country.
Effettuare una delle seguenti operazioni:
Fare clic sull'etichetta attiva di Elementi elenco nella scheda Campo della palette Oggetto.
Fare clic sull'etichetta attiva di Specificare i valori degli elementi nella scheda Binding della palette Oggetto.
Selezionare la connessione dati.
Nota: se non si è già connessi a un'origine dati, Binding dei dati predefinito è l'unica selezione presente nell'elenco Connessione dati.
Fare clic sul triangolo accanto alla casella Elementi, quindi selezionare un binding.
Il binding selezionato dovrebbe essere un valore dati ripetitivo o un gruppo in modo che nell'elenco a discesa o nella casella di riepilogo vengano visualizzati elementi.
Ad esempio, selezionare Paesi > elemento.
La seguente stringa verrà visualizzata nella casella Elementi:
$record.countries.item[*]
 È possibile digitare questa stringa nella casella Elementi anziché selezionarla. Nota: Per le connessioni dati OLEDB, la casella Elementi non è disponibile. Utilizzare le caselle Testo elemento e Valore elemento per selezionare le colonne del database da utilizzare per comporre l'elenco.
Per visualizzare un nome di elemento di facile utilizzo in fase di esecuzione, fare clic sul triangolo accanto alla casella Testo elemento, quindi selezionare un binding.
Ad esempio, selezionare @uiname per mostrare Stati Uniti.
(Facoltativo) Per salvare nell'origine dati un valore diverso dall'etichetta Testo elemento, fare clic sul triangolo accanto alla casella Valore elemento, quindi selezionare un binding.
Ad esempio, selezionare @token per salvare US nel file dati.
Al termine, fare clic su OK.
Dopo aver impostato un a binding, verrà visualizzata una piccola icona a un collegamento con l'etichetta attiva.
Per impostare lo script che compili dinamicamente un secondo campo dopo aver compilato il primo:Con il primo elenco a discesa selezionato, selezionare Modifica dall'elenco Mostra nell'Editor di script.
Selezionare JavaScript dalla casella Linguaggio.
Inserire il seguente 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
|
Descrizione
|
tempString
|
Specifica la stringa per xfa.record. Ad esempio, se Stati Uniti è selezionato, xfa.record diventa xfa.record.US.
|
this.boundItem
|
Un metodo oggetto elenco che converte un nome di facile utilizzo in un valore o una stringa token. Ad esempio, quando Stati Uniti viene selezionato, viene inoltrato US.
|
xfa.event.newText
|
Restituisce il contenuto del nuovo testo dell'elenco Evento Change. Ad esempio, quando Stati Uniti viene selezionato, viene inoltrato US.
|
var nItemsLength = oItems.nodes.length;
|
Interroga il numero di elementi secondari di <US> (o <SRV>), che è il numero di <item> secondari.
|
DropDownList2.clearItems();
|
Rimuove gli elementi esistenti dal secondo elenco a discesa.
|
for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++)
|
Interroga ciascun <item> secondario di <US> (o <SRV>).
|
DropDownList2.addItem(oItems.nodes.item(nItemCount).value);
|
Ottiene il valore di testo dell'<item> secondario indicato dall'indice nItemCount e aggiunge il valore come nuovo elemento nel secondo elenco a discesa
|
Impostazione del secondo campoNella palette Libreria oggetto, fare clic sulla categoria Standard e trascinare un Elenco a discesa o una Casella di riepilogo nella struttura del modulo.
Ad esempio, inserire un Elenco a discesa.
(Facoltativo) Nella palette Oggetto, fare clic sulla scheda Campo e inserire una didascalia per l'oggetto nella casella Didascalia.
Ad esempio, digitare States/Provinces.
Eseguire il binding del campo a una origine dati.
Ad esempio, eseguire il binding del nodo regione all'elenco a discesa Regioni/Province.
Visualizzare il modulo nella scheda Anteprima PDF.
|
|
|