Also man kann die Bindungen zwar nicht zur Laufzeit ändern, aber man kann das Data DOM manipulieren.
Dafür gibt es verschiedene Änsätze.
Einer wäre ein XSLT-Stylesheet, das die Exportdaten prüft und nach gewissen Kriterien formatiert.
Das ist aber alles andere als schnell gemacht, denn XSLT ist knifflig und hat eine ziemlich steile Lernkurve.
Ein andere Ansatz ist die Löschung der gewünschten Daten vor dem Export mit den Bordmitteln.
Dafür nimmt man die remove() Methode, die Nodes entfernen kann.
Dieses Beispiel löscht die Node "TF2" unter "Formular1.Seite" aus dem Data DOM.
Code: Alles auswählen
xfa.datasets.data.Formular1.Seite.nodes.remove(xfa.datasets.data.Formular1.Seite.nodes.namedItem("TF2"))
Nun ja, die Node ist dann aber ganz und gar weg und mit ihr auch alle Daten, die Sie mal bereit hielt.
Damit das nicht so bleibt, braucht man also – na? – genau ein Backup!
Das kann man alles mit ein paar Zeilen Code erreichen.
Dieses Beispiel erstellt also ein Backup des Data DOM, entfernt dann die gewünschte Node aus den zu exportierenden Daten, sendet die Daten als Mail und stellt dann das ursprüngliche Data DOM aus dem Backup wieder her.
Code: Alles auswählen
//Variablen
var dataDOM = xfa.datasets.data, //Data DOM
backupXML = dataDOM.saveXML(), //Backup des kompletten Data DOM
backupData = xfa.datasets.createNode("dataGroup", "backupDOM"), //Datennode für Backup erstellen
backupNode = xfa.datasets.nodes.namedItem("backupDOM"); //Temporäres Data DOM suchen
//Backup mit Daten befüllen
backupData.loadXML(backupXML);
//Temporäres Data DOM unter xfa.datasets anlegen
//Zuerst evtl. vorhandene Backups entfernen ...
while (backupNode !== null) {
xfa.datasets.nodes.remove(backupNode);
backupNode = xfa.datasets.nodes.namedItem("backupDOM");
}
// ... dann Backup auslagern.
xfa.datasets.nodes.append(backupData);
//Data DOM für Export von ungewünschter Node bereinigen
xfa.datasets.data.Formular1.Seite.nodes.remove(xfa.datasets.data.Formular1.Seite.nodes.namedItem("TF2"));
//Data DOM exportieren z.B. per Mail-Anhang
var cEmailURL = "mailto:user@domain.org?subject=Meine Daten&body=Hallo, hier kommen meine Daten.";
event.target.submitForm({cURL: encodeURI(cEmailURL), cSubmitAs:"XML", cCharSet:"utf-8"});
//Data DOM aus Backup wiederherstellen
xfa.datasets.data.loadXML(xfa.datasets.nodes.namedItem("backupDOM").saveXML(), true, true);