Skapa och redigera XFA-formulärträd
TXFAWidgetRuntime stöder transaktionell JavaScript-skapande, kloning och redigering av det levande formulärträdet via xfa.form och nodesamlingar
Det levande formulärträdet har oberoende nativa identiteter och kan sparas som ett XDP-formulärpaket utan att ändra den skrivna templaten
Skapa och infoga ett fält
var row = xfa.resolveNode("row[1]");
var field = xfa.form.createNode("field", "additional");
row.nodes.append(field);
field.w = "160pt";
field.h = "24pt";
field.ui.getElement("textEdit");
field.font.typeface = "DejaVu Sans";
field.rawValue = "Additional value";
createNode(className, name, namespaceURI) returnerar en fristående nod, med tomt namn och modellnamnrymden när de valfria argumenten utelämnas
De accepterade klasserna inkluderar field, subform, draw, area, exclGroup och de egenskapsklasser som runtime-egenskapsschemat känner igen
Att skapa en nod infogar den inte i formuläret eller skapar någon synlig widget förrän den bifogats med de krävda UI- och värdetegenskaperna
Samlingsoperationer och kloning
| Operation | Beteende |
|---|---|
parent.nodes.append(node) | Flyttar en fristående eller bifogad nod till slutet av förälderns levande barnsamling |
parent.nodes.insert(node, before) | Flyttar noden omedelbart före ett befintligt barn till samma förälder |
parent.nodes.remove(node) | Kopplar loss ett barn samtidigt som dess skriptidentitet behålls för senare återanvändning |
node.clone(true) | Returnerar en fristående djup klon med separata nativa och skriptidentiteter |
node.clone(false) | Returnerar en fristående grund klon utan barnnoder eller kopierat fältvärde |
Samlingsordning, parent, egenskapsslagning och stödd SOM-lösning speglar lyckade redigeringar omedelbart inuti händelsen
Referenser som hålls av skriptobjekt fortsätter adressera sina egna noder efter en genomförd redigering eller en händelserollback, inklusive fristående djupa och grunda klona
En cykel, ett referensbarn från en annan förälder eller en data-modellnod som skickas till en formuläroperation kastar ett undantag innan den ogiltiga operationen ändrar trädet
Formulärmodellens rot kan innehålla nyskapade subforms och fält, men roten själv kan inte flyttas eller klonas
Upprepade omfång och initiala instanser
Faktiska formulärinstanser behåller separata identiteter även när deras skrivna namn är lika, deras datakontexter skiljer sig eller inget datasets-paket finns
En tom sammanslagning använder det uttryckliga antalet occur.initial, eller occur.min när initial saknas, och ett utelämnat max är som standard min
För en tom sammanslagning tillåts ett initialvärde utanför minimi- och maximivärdet, inklusive noll initiala kopior
Nästlade och namnlösa subforms behåller sina egna occurrence-vägar, och materialisering av dessa instanser syntetiserar inte ett datasets-paket
Dessa occurrence-regler följer XML Forms Architecture 3.3, tryckta sidor 339–345
Genomförande, rollback och utdata
En lyckad händelse tillämpar sin strukturella journal, bygger om nativa widgets och gör det redigerade formuläret tillgängligt för SaveToBytes och automatisk nativ PDF-skapande
Ett ofångat skriptundantag, nativt genomförandefel eller överskriden händelsebudget återställer originaldokumentet, widgetidentiteter och bibehållet skripttillstånd, så att en senare händelse kan försöka igen
De befintliga budgetarna för operation, nod, djup, byte, widget och förfluten tid gäller även strukturell förberedelse och genomförande
Sparade formulärinstanser kan läsas in igen och skickas till HPDFXFAWriteHeadlessPDF för att skapa riktiga PDF-fält och utseendeströmmar med tillhandahållna typsnittsbyte
Omfång
Dessa API:er redigerar den levande formulärmodellen och dess stödda egenskapsschema
Allmän xfa.template-redigering, fullständig bearbetning av choice subform-set, det fullständiga XFA-klasschemat och godtyckliga bindningsselectorkombinationer förblir separata förmågor