|
Puede rellenar dinámicamente un segundo campo después de rellenar el primero empleando secuencias de comandos. Por ejemplo, puede tener una lista desplegable que muestre a los usuarios una lista de países. Después de que un usuario selecciona un país, la segunda lista muestra los estados o provincias para dicho país.
Por ejemplo, el archivo XML de ejemplo al que se conecta debería tener lo siguiente 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 ejemplo, después de que seleccione Vietnam en la lista desplegable, los elementos mostrados en la lista Estados/Provincias solo muestran los aplicables a Vietnam.
Antes de realizar esta tarea, deberá asegurarse de que está aplicada la siguiente configuración:
Configuración del primer campoEn la paleta Biblioteca de objetos, haga clic en la categoría Estándar y arrastre una Lista desplegable o Cuadro de lista al diseño de formulario.
Por ejemplo, inserte una Lista desplegable.
(Opcional) En la paleta Objeto, haga clic en la ficha Campo y escriba un rótulo para el objeto en el cuadro Rótulo.
Por ejemplo, escriba Country.
Realice alguna de las siguientes acciones:
Seleccione la conexión de datos.
Nota: Si no está ya conectado a un origen de datos, Enlace de datos predeterminado es la única selección en la lista Conexión de datos.
Haga clic en el triángulo que se encuentra junto al cuadro Elementos y seleccione un enlace.
El enlace que seleccione debería ser un grupo o valor de datos de repetición para que la lista desplegable o el cuadro de lista muestre más de un elemento.
Por ejemplo, seleccione países > elemento.
La siguiente cadena aparece en el cuadro Elementos:
$record.countries.item[*]
 puede escribir esta cadena en el cuadro Elementos en lugar de seleccionarla. Nota: para conexiones de datos OLEDB, el cuadro Elementos no está disponible. Utilice los cuadros Texto de elemento y Valor de elemento para seleccionar las columnas de la base de datos y rellenar la lista.
Para mostrar un nombre de elemento fácil de utilizar en tiempo de ejecución, haga clic en el triángulo que se encuentra en el cuadro Texto de elemento y seleccione un enlace.
Por ejemplo, seleccione @uiname para mostrar Estados Unidos.
(Opcional) Para guardar un valor diferente a la etiqueta Texto de elemento en el origen de datos, haga clic en el triángulo que se encuentra junto al cuadro Valor de elemento y seleccione un enlace.
Por ejemplo, seleccione @token para guardar EE.UU. en el archivo de datos.
Haga clic en Aceptar.
Después de que se haya definido un enlace, aparece un pequeño icono de vínculo con la etiqueta activa.
Configuración de la secuencia de comandos que rellena dinámicamente un segundo campo después de rellenar el primeroCon la primera lista desplegable seleccionada, en el Editor de secuencias de comandos, seleccione Cambiar en la lista Mostrar.
Seleccione JavaScript en la lista Idioma.
Escriba la siguiente secuencia de comandos:
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);
}
Secuencia de comandos
|
Descripción
|
tempString
|
Especifica la cadena para xfa.record. Por ejemplo, si se selecciona Estados Unidos, xfa.record se convierte en xfa.record.US.
|
this.boundItem
|
Método de lista que traduce del nombre de fácil manejo al valor o cadena de token. Por ejemplo, cuando se selecciona Estados Unidos, se envía EE.UU..
|
xfa.event.newText
|
Devuelve el nuevo contenido de texto del suceso Change de la lista. Por ejemplo, cuando se selecciona Estados Unidos, se envía Estados Unidos.
|
var nItemsLength = oItems.nodes.length;
|
Consulte el número de elementos secundarios de <EE.UU.> (o <SRV>), que es el número de <item> secundario.
|
DropDownList2.clearItems();
|
Elimina los elementos existentes de la segunda lista desplegable.
|
for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++)
|
Consulta cada <item> secundario de <EE.UU.> (o <SRV>).
|
DropDownList2.addItem(oItems.nodes.item(nItemCount).value);
|
Obtiene el valor de texto del <item> secundario indicado por el índice nItemCount y agrega dicho valor como un nuevo elemento a la segunda lista desplegable.
|
Configuración del segundo campoEn la paleta Biblioteca de objetos, haga clic en la categoría Estándar y arrastre una Lista desplegable o Cuadro de lista al diseño de formulario.
Por ejemplo, inserte una Lista desplegable.
(Opcional) En la paleta Objeto, haga clic en la ficha Campo y escriba un rótulo para el objeto en el cuadro Rótulo.
Por ejemplo, escriba States/Provinces.
Enlace el campo al origen de datos.
Por ejemplo, enlace el nodo del estado a la lista desplegable Estados/Provincias.
Vea el formulario en la ficha Vista previa de PDF.
|
|
|