philipp_hemmer
I'm new here

FS-LIST inline Elemente kopieren über die API geht nicht

Hallo,

Wir kopieren die Inhalte aus zwei FS List Eingabekomponenten zusammen. Das haben wir wie folgt umgesetzt:

formDataList_target =  ... // FormDataList der zweiten Liste ( Liste in die geschrieben werden soll)

linkImpl_target = .... // Section  aus der ersten Liste, soll in die zweite Liste kopiert werden

LinkFormsProducer producer = (LinkFormsProducer) formDataList_target.getProducer();

IdProvidingFormData newFormDataListElement = producer.create(((LinkTemplate)((FormDataImpl)linkImpl_target).getTemplate()), masterLanguage );
((FormDataImpl) newFormDataListElement).refresh(((FormDataImpl)linkImpl_source).getData());   

context.logInfo("Data from source section " + linkImpl_source.getData()); // liefert korrekte Daten der Section

context.logInfo("newFormDataListElement data " + newFormDataListElement.getData());  //  Inhalte aus der source section wurden nicht übernommen

formDataList_target.add(newFormDataListElement);

Nach der Ausführung des Skripts wird der zweiten Liste zwar ein neuer Absatz hinzugefügt aber die Inhalt  aus dem Absatz der ersten Liste wird nicht übernommen.

Was haben wir bei der Implementierung übersehen ?

Verwendete FS Version  4.2.476

Vielen Dank im Voraus

0 Kudos
2 Replies
feddersen
Community Manager

Hallo Phillip,

ist das der vollständige Code? Unter http://www.e-spirit.com/odfs42/access/examples/de/espirit/firstspirit/access/editor/FsListEditorValu... wird gezeigt, wie man basierend auf einem Link einen Eintrag in einer FS_LIST anlegt. Auf den ersten Blick fehlt noch eine Entsprechung für das editor.set(masterLanguage, dataList)

Viele Grüße

Christoph

0 Kudos
andre
I'm new here

generell sollte kein internen Implementierungen genutzt werden, casts nach bspw. FormDataImpl sind hier nicht noetig. Konkret sollte man hier auf Basis von FormData u. FormField arbeiten. nicht Data ueber FormDAtaImpl holen. also kopieren, setzen und dann auch speichern. wie sieht denn das komplette script aus?

final IdProvidingFormData sourceFormData = ...;

        final IdProvidingFormData targetFormData = ((LinkFormsProducer) dataList.getProducer()).create(template, myLanguage);

        final List<String> formFieldNames = sourceFormData.getForm().appendEditorNames(null);

        for (final String formFieldName : formFieldNames) {

            final FormField<?> formField = sourceFormData.get(myLanguage, formFieldName);

            final Object formFieldValue = formField.get();

            final FormField<?> targetFormField = targetFormData.get(myLanguage, formFieldName);

            targetFormField.set(formFieldValue);

        }


0 Kudos