plamka
I'm new here

Auswahlliste (COMBOBOX) per RULE dynamisch zusammenbauen

Jump to solution

Hallo,

folgendes habe ich vor.

Es soll eine Auswahlliste dynamisch aus den Datensätzen aus einer Datenquelle befüllt werden. An die Query von der Auswahlliste muss noch ein Parameter übergeben werden, dieser wird allerdings erst zur Laufzeit ermittelt.

Die Auswahlliste sieht wie folgt aus

              

            <CMS_INPUT_COMBOBOX name="pt_st_left_mt_markt" allowEmpty="yes" useLanguages="no">

                    <CMS_INCLUDE_OPTIONS type="database">

                      <LABELS>

                        <LABEL lang="*">#item.displayName</LABEL>

                      </LABELS>

                      <QUERY name="data.ehmaerktebykaufmannuidandinhalt"/>

                      <TABLE>data.eh_maerkte</TABLE>

                    </CMS_INCLUDE_OPTIONS>

                    <LANGINFOS>

                      <LANGINFO lang="*" label="Markt" description="Markt"/>

                    </LANGINFOS>

                  </CMS_INPUT_COMBOBOX>

Die Query ehmaerktebykaufmannuidandinhalt erwartet noch einen Parameter, dieser wird über eine Regel ermittelt.

<ON_EVENT>

        <SCHEDULE delay="50" id="hiddenKaufmannUid" service="RuleScriptExecuteService">

            <CONDITION>

                <PROPERTY name="EMPTY" source="hiddenKaufmannUid"/>

            </CONDITION>

            <PARAM name="scriptUID">

                <TEXT>rule_get_kaufmannuid</TEXT>

            </PARAM>

        </SCHEDULE>

        <DO>

            <PROPERTY name="VALUE" source="hiddenKaufmannUid"/>

        </DO>

    </ON_EVENT>

Die Ermittlung erfolgt in einem Script (die Implementierung ist für den Fall unwichtig).

Damit der Paraemter noch an die Query übergeben wird, mache ich folgendes ->

<ON_EVENT>

        <IF>

            <PROPERTY name="FOCUS" source="pt_st_left_mt_markt"/>

        </IF>

        <WITH>

            <PROPERTY name="VALUE" source="hiddenKaufmannUid"/>

        </WITH>

        <DO>

            <PROPERTY name="query.kaufmannUid" source="pt_st_left_mt_markt"/>

        </DO>

    </ON_EVENT>

Der in dem verstekcten Feld hiddenKaufmannUid abgelegte Wert, wird beim FOCUS an die Query übergeben.

Jetzt zum eigentlichen Problem.

Dadurch das hier mehrere Schritte erforderlich sind, muss ein manueller FOCUS auf das Feld durchgeführt werden, damit der Parameter an die Query übergeben wird. Wünschenswert wäre, dass der Parameter direkt an die Query übergeben wird, sobald dieser ermittelt wurde. Also direkt nach dem Aufruf des Scripts rule_get_kaufmannuid. Ist dies möglich und wenn ja wie würde das gehen?

Ggf. gibt es noch einen besseren Weg ein Parameter dynamisch an das Feld zu übergeben?

Gruß

David

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo David,

hast Du schon versucht, in der zweiten Regel - anstatt auf FOCUS zu testen - einfach auf "not empty" des versteckten Feldes zu prüfen? Wobei ich mich glaube ich dunkel daran erinnere dass das evtl. nicht funktioniert...

Hat es einen bestimmten Grund, dass der Wert erst in einem versteckten Feld gespeichert wird, d.h. wird der noch woanders benötigt oder dient das nur zum "Transport" des Script-Ergebnisses?

Das direkte Setzen über den ValueService geht nicht? Also z.B.

<ON_EVENT>

     <SCHEDULE delay="50" id="hiddenKaufmannUid" service="RuleScriptExecuteService">

          <PARAM name="scriptUID">

               <TEXT>rule_get_kaufmannuid</TEXT>

          </PARAM>

     </SCHEDULE>

     <DO>

          <PROPERTY name="query.kaufmannUid" source="pt_st_left_mt_markt"/>

      </DO>

</ON_EVENT>

Viele Grüße

Michael

View solution in original post

0 Kudos
2 Replies
mbergmann
Crownpeak employee

Hallo David,

hast Du schon versucht, in der zweiten Regel - anstatt auf FOCUS zu testen - einfach auf "not empty" des versteckten Feldes zu prüfen? Wobei ich mich glaube ich dunkel daran erinnere dass das evtl. nicht funktioniert...

Hat es einen bestimmten Grund, dass der Wert erst in einem versteckten Feld gespeichert wird, d.h. wird der noch woanders benötigt oder dient das nur zum "Transport" des Script-Ergebnisses?

Das direkte Setzen über den ValueService geht nicht? Also z.B.

<ON_EVENT>

     <SCHEDULE delay="50" id="hiddenKaufmannUid" service="RuleScriptExecuteService">

          <PARAM name="scriptUID">

               <TEXT>rule_get_kaufmannuid</TEXT>

          </PARAM>

     </SCHEDULE>

     <DO>

          <PROPERTY name="query.kaufmannUid" source="pt_st_left_mt_markt"/>

      </DO>

</ON_EVENT>

Viele Grüße

Michael

0 Kudos

Hi,

vielen Dank für die Antwort.

Ja, das mit NO EMPTY scheint realtiv gut zu funktionieren.

Das direkte Setzen übder den ValueService funktioniert leider nicht.

Vielen Dank

0 Kudos