dude
I'm new here

Formular nach Klick auf FS_BUTTON aktualisieren

Jump to solution

Hallo,

ich versuche gerade mittels eines FS_BUTTON einen Termin einer referenzierten Entität in einen Datepicker des aktuellen Formulars zu übernehmen.

Ich schaffe es, die aktuelle Entität in der DB zu updaten/speichern, jedoch kriegt der Nutzer diese Änderungen nicht mit. Erst, wenn der auf Aktualisieren drückt (und die Meldung "Sie verlieren alle ungespeicherten Werte" abnickt), wird die Änderung im Formular aktualisiert.

Gibt es eine Möglichkeit, das "live" zu updaten?

Im Skritpt gibt es lt. Doku den context (BasicScriptContext), und das aktuelle Element (vom Typ DataSet) ...

Grüße,

Matthias

0 Kudos
1 Solution

Accepted Solutions

Wichtig ist der Teil: <PARAM name="textfield">#field.label_trade_fair_travel</PARAM>

       <FS_BUTTON name="cs_tft_button" hFill="yes" noBreak="no" onClick="script:av_tft" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="update fair dates"/>

            <LANGINFO lang="DE" label="Daten übernehmen"/>

          </LANGINFOS>

          <PARAMS>

            <PARAM name="textfield">#field.label_trade_fair_travel</PARAM>

          </PARAMS>

        </FS_BUTTON>

        <CMS_INPUT_TEXT name="label_trade_fair_travel" allowEmpty="yes" preset="copy" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="Label"/>

          </LANGINFOS>

        </CMS_INPUT_TEXT>

Im Skript kann man dann über die Variable textfield (vom Typ FormField) auf den Wert zugreifen, bzw. über textfield.set("mein wert") den Wert setzen.

[EDIT] Fehlerhafte Referenz nach Hinweis korrigiert

Peter

View solution in original post

0 Kudos
7 Replies
Peter_Jodeleit
Crownpeak employee

Da scheint es tatsächlich ein Problem zu geben, weiter Untersuchung erfolgen bei uns unter der internen ID #103947.

Es wäre gut, wenn du noch das Formular und den Skript-Code beilegen könntest (ev. auch per direkte Nachricht an mich).

--Peter

Peter
0 Kudos

Damit auch die Anderen etwas von dierser Diskussion haben, hier mal mein kleines Skript, dass das Feld "tft_start_date" auf die aktuelle Zeit setzen soll:

Skript:

//! Beanshell

if (null != element) {

          // get the current entity

          entity = element.getEntity();

          // update some values

          entity.setValue( "tft_start_date", new java.util.Date() );

          entity.setValue( "label_trade_fair_travel_EN", "omfgwtfbbq" );

          // this doesn't work either

          properties.put( "label_trade_fair_travel_EN", "omfgwtfbbq" );

          // save the changes

          entity.getSession().commit();

}

Formular:

        <FS_BUTTON name="cs_tft_button" hFill="yes" noBreak="no" onClick="script:av_tft" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="update fair dates"/>

            <LANGINFO lang="DE" label="Daten übernehmen"/>

          </LANGINFOS>

          <PARAMS>

            <PARAM name="foo">#label_trade_fair_travel</PARAM>

          </PARAMS>

        </FS_BUTTON>

         <CMS_INPUT_TEXT name="label_trade_fair_travel" allowEmpty="yes" preset="copy" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="Label"/>

          </LANGINFOS>

        </CMS_INPUT_TEXT>

        <CMS_INPUT_DATE name="cs_tft_start_date" singleLine="yes" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="date of arrival:" format="dd.MM.yy HH:mm:ss"/>

          </LANGINFOS>

        </CMS_INPUT_DATE>

Funktioniert leider nicht, auch verstehe ich die Dokumentation der properties-Variablen nicht ganz. Klingt lt. Doku so, als würde sie nach Skriptdurchlauf Variablen setzen. Passiert aber nicht Smiley Sad

properties:

Zugriff auf die über die Eingabekomponente gesetzten Werte (Map). Die Werte werden nach der Ausführung des Skripts gesetzt und beim Speichern der Eingabekomponente gespeichert. Auf die zurückgelieferten Werte können Methoden des Interface java.util.Map<String, String> ausgeführt werden.

Matthias

0 Kudos

Link zur Doku:

http://www.e-spirit.com/odfs42/de/vorlagenentwicklung/formular/fs/fs_button/button.html

Bitte da den Teil beachten, wie aus dem Skript auf Formularelemente zugegriffen werden kann ("#formfield").

Der Weg über "element.getEntity()" ist der falsche. Auch sollte in dem Button-Skript kein "commit" gemacht werden, oder die Daten über das Element gesetzt werden.

Edit: Text wurde korrigiert, s.u.

Peter
0 Kudos

Ok,

dann bin ich auf dem falschen Weg, gibt es denn eine offizielle Beschreibung, wie man denn mittels eines Skriptes das aktuelle Formular modifiziert?

Oder einfach nur ein kurzes Skript. Der Hinweis mit #form bringt mich leider nicht weiter 😕

Grüße,

Matthias

0 Kudos

Wichtig ist der Teil: <PARAM name="textfield">#field.label_trade_fair_travel</PARAM>

       <FS_BUTTON name="cs_tft_button" hFill="yes" noBreak="no" onClick="script:av_tft" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="update fair dates"/>

            <LANGINFO lang="DE" label="Daten übernehmen"/>

          </LANGINFOS>

          <PARAMS>

            <PARAM name="textfield">#field.label_trade_fair_travel</PARAM>

          </PARAMS>

        </FS_BUTTON>

        <CMS_INPUT_TEXT name="label_trade_fair_travel" allowEmpty="yes" preset="copy" useLanguages="no">

          <LANGINFOS>

            <LANGINFO lang="*" label="Label"/>

          </LANGINFOS>

        </CMS_INPUT_TEXT>

Im Skript kann man dann über die Variable textfield (vom Typ FormField) auf den Wert zugreifen, bzw. über textfield.set("mein wert") den Wert setzen.

[EDIT] Fehlerhafte Referenz nach Hinweis korrigiert

Peter
0 Kudos

Field statt Form, dann geht's. Dankeschön!

<PARAMS>

            <PARAM name="label">#field.label_trade_fair_travel</PARAM>

</PARAMS>

0 Kudos

Ups, danke für den Hinweis, habe mein Posting korrigiert, damit keine weiter Verwirrung entsteht.

Peter
0 Kudos