Fylla i dynamiskt i ett andra fält efter att du har fyllt i det första

Du kan dynamiskt fylla i ett andra fält efter att du har fyllt i det första med hjälp av skript. Du kan t ex ha en nedrullningsbar lista som visar en lista över länder. När en användare har valt ett land visas en andra lista med staterna eller provinserna i landet.

Exempel-XML-filen som du ansluter till kan t ex ha följande definierat:

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

När du t.ex. har valt Vietnam i den första nedrullningsbara listan, visas bara de objekt som gäller för Vietnam i listan Stater/provinser.

Innan du utför den här åtgärden måste du se till att följande inställningar används:

Ställa in det första fältet

  1. Klicka på kategorin Standard på paletten Objektbibliotek, och dra sedan en nedrullningsbar lista eller listruta till formulärdesignen.

    Infoga t ex en nedrullningsbar lista.

  2. (Valfritt) Klicka på fliken Fält på paletten Objekt, och skriv sedan en bildtext för objektet i rutan Bildtext.

    Skriv t.ex. Land.

  3. Gör något av följande:

    • Klicka på den aktiva etiketten Listobjekt på fliken Fält på paletten Objekt.

    • Klicka på den aktiva etiketten Ange objektvärden på fliken Bindning på paletten Objekt.

  4. Välj dataanslutning.

    Obs! Om du inte redan är ansluten till en datakälla kan du endast välja Standarddatabindning i listan Dataanslutning.
  5. Klicka på triangeln bredvid rutan Objekt och välj en bindning.

    Bindningen som du väljer ska vara ett upprepat datavärde eller en upprepad grupp, så att fler än ett objekt visas i den nedrullningsbara listan eller listrutan.

    Välj t.ex. länder > objekt.

    Följande sträng visas i rutan Objekt:

    $record.countries.item[*]

    Du kan skriva strängen i rutan Objekt i stället för att välja den.
    Obs! Rutan Objekt är inte tillgänglig för OLEDB-dataanslutningar. Använd rutorna Objekttext och Objektvärde och välj de databaskolumner som ska användas för att fylla i listan.
  6. Om du vill visa ett användarvänligt objektnamn vid körningen klickar du på triangeln bredvid rutan Objekttext och väljer en bindning.

    Välj t ex @uiname om du vill visa USA.

  7. (Valfritt) Om du vill spara ett annat värde än etiketten för Objekttext i datakällan, klickar du på triangeln bredvid rutan Objektvärde och väljer sedan en bindning.

    Välj t ex @token om du vill spara US i datafilen.

  8. Klicka på OK.

    När en bindning har ställts in visas en liten länkikon tillsammans med den aktiva etiketten.

Ställa in ett skript som dynamiskt fyller i ett andra fält när det första har fyllts i

  1. När den första nedrullningsbara listan är markerad väljer du Change i listan Visa i skriptredigeraren.

  2. Välj JavaScript i listan Språk.

  3. Skriv följande skript:

    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); 
    }

    Skript

    Beskrivning

    tempString

    Anger strängen för xfa.record. Om t ex USA väljs blir xfa.record xfa.record.US.

    this.boundItem

    En listobjektmetod som översätter från det användarvänliga namnet till värde- eller tokensträngen. När t ex USA väljs, skickas US .

    xfa.event.newText

    Returnerar det nya textinnehållet i listan Change-händelse. När t ex USA väljs, skickas USA .

    var nItemsLength = oItems.nodes.length;

    Frågar efter antalet underordnade element i <US> (eller <SRV>), det vill säga antalet underordnade <objekt>.

    DropDownList2.clearItems();

    Tar bort alla befintliga objekt i den andra nedrullningsbara listan.

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

    Frågar för varje underordnat <objekt> i <US> (eller <SRV>).

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

    Hämtar textvärdet för det underordnade objektet som anges med indexet nItemCount, och lägger till värdet som ett nytt objekt i den andra nedrullningsbara listan

Ställla in det andra fältet

  1. Klicka på kategorin Standard på paletten Objektbibliotek, och dra sedan en nedrullningsbar lista eller listruta till formulärdesignen.

    Infoga t ex en nedrullningsbar lista.

  2. (Valfritt) Klicka på fliken Fält på paletten Objekt, och skriv sedan en bildtext för objektet i rutan Bildtext.

    Skriv t.ex. Stater/provinser.

  3. Bind fältet till datakällan.

    Du kan t ex binda noden stat till den nedrullningsbara listan Stater/provinser.

  4. Visa formuläret på fliken Förhandsgranska PDF