daniel_philippi
Occasional Collector

Wert einer Combobox in Datenquellen per Script festlegen

Jump to solution

Hallo Zusammen.

Ich möchte per Script Daten in eine Datenquelle schreiben. Das funktioniert auch soweit. Was mit noch fehlt ist die Verknüpfung zweier Tabellen.

Es soll im Prinzip genau anders herum wie hier beschrieben funktionieren:

https://community.e-spirit.com/message/9184#9181

Ich möchte nicht die Liste der Verbundenen Elemente verknüpfen, sondern einen Wert aus einer anderen Tabelle auswählen und in eine Combobox speichern. In dem verklikten Beispiel möchte ich einem Partner eine News zuweisen.

Daher die Frage, wie kann ich einen Wert einer Combobox per Script setzen.

Hier mein bisheriger Ansatz:

dataSet = c2Element.getDataset(entity);

FormData data = dataSet.getFormData();

data.get(context.getProject().getMasterLanguage(), "cs_category").set(fs_id_of_other_table)

dataSet.setFormData(data);

dataSet.save();

Da bekomme ich aber einen Fehler:

Invalid value for 'cs_category' (de.espirit.firstspirit.access.store.templatestore.gom.GomCombobox)

Muss ich hier ein Option Objekt erzeugen und das zuweisen? Wenn ja wäre die Frage wie?

Gruß,

Daniel

0 Kudos
1 Solution

Accepted Solutions
StefanSchulz
I'm new here

Hi Daniel,

über die FS_ID funktioniert es nicht.

Der wohl gangbare Weg ist, sich das GomFormElement der cs_category zu holen (data.getForm().findEditor("cs_category")). Bei einer Combobox implementiert dieses das Interface OptionFactoryProvider (evtl. sicherheitshalber im Skript prüfen). Über dieses kannst du dir die zugehörige OptionFactory holen, die dir eine Methode create(Object) anbietet. Diese nimmt unter anderem einen Datensatz als Parameter und erzeugt ein entsprechendes Options-Objekt. Mit diesem kannst du die Combobox füttern.

Grüße

Stefan

View solution in original post

0 Kudos
4 Replies
StefanSchulz
I'm new here

Hi Daniel,

über die FS_ID funktioniert es nicht.

Der wohl gangbare Weg ist, sich das GomFormElement der cs_category zu holen (data.getForm().findEditor("cs_category")). Bei einer Combobox implementiert dieses das Interface OptionFactoryProvider (evtl. sicherheitshalber im Skript prüfen). Über dieses kannst du dir die zugehörige OptionFactory holen, die dir eine Methode create(Object) anbietet. Diese nimmt unter anderem einen Datensatz als Parameter und erzeugt ein entsprechendes Options-Objekt. Mit diesem kannst du die Combobox füttern.

Grüße

Stefan

0 Kudos

Perfekt, das wars, danke!

Es war noch ein Cast auf GomCombobox nötig, aber dann ging es:

GomFormElement gomForm = data.getForm().findEditor("cs_category");

Option option = ((GomCombobox) gomForm).getOptionFactory().create(entity);

0 Kudos

Prima. GomCombobox ist halt nicht wirklich API, deshalb nannte ich OptionFactoryProvider (müsste in dem Cast genauso funktionieren).

0 Kudos

Korrekt, das ging auch! VIELEN DANK!

0 Kudos