Search the FirstSpirit Knowledge Base
Hallo zusammen,
kurz vorab. Die nachfolgenden Daten sind nur beispielhaft und entsprechen nicht den echten Inhalten.
Ich habe eine FS_DATASET Komponente über die ich einen Kontakt aus der entsprechenden Datenquelle auswähle. Anschließen soll die Combobox für Telefonnummern anhand des ausgewählten Kontakts vorgefiltert werden, so das nur noch dem Kontakt zugewiesene Telefonnummern auswählbar sind.
Hier der entsprechende Code für Formular, Rules und Query
<FS_DATASET name="st_contact" mode="sheet">
<LANGINFOS>
<LANGINFO lang="*" label="Kontakt"/>
</LANGINFOS>
<SOURCES>
<CONTENT name="contact"/>
</SOURCES>
</FS_DATASET>
<CMS_INPUT_COMBOBOX name="st_phone" allowEmpty="yes" hFill="no" useLanguages="no">
<CMS_INCLUDE_OPTIONS type="database">
<LABELS>
<LABEL lang="*">#item.number</LABEL>
</LABELS>
<QUERY name="LocalDB.phone_by_contact"/>
<TABLE>LocalDB.telefon</TABLE>
</CMS_INCLUDE_OPTIONS>
<LANGINFOS>
<LANGINFO lang="*" label="Telefon"/>
</LANGINFOS>
</CMS_INPUT_COMBOBOX>
<RULES>
<RULE>
<IF>
<PROPERTY name="FOCUS" source="st_telefon"/>
</IF>
<WITH>
<PROPERTY name="VALUE" source="st_contact"/>
</WITH>
<DO>
<PROPERTY name="query.contactId" source="st_telefon"/>
</DO>
</RULE>
</RULES>
<QUERY entityType="telefon">
<FILTERPARAM parameter="contactId" datatype="java.lang.Integer" value="0"/>
<EQ attribute="contactList.fs_id" parameter="contactId"/>
<ORDERCRITERIA attribute="number" descending="1"/>
</QUERY>
Nun zu meinem Problem. Damit das Ganze Funktioniert müsste ich der Query die FS_ID des Kontakts als Paramter "contactId" übergeben. Leider bekomme ich ja vom FS_DATASET als Value nur ein "de.espirit.firstspirit.client.access.editor.DatasetEditorValueImpl$DatasetContainerImpl" Objekt zurück. Ich hatte es auch schon über <PROPERTY name="VALUE" source="st_contact.fs_id"/> und ähnlichem probiert, leider ohne Erfolg.
Nun die Frage gibt es hier ein Weg an die FS_ID des ausgewählten Datensatzes zu kommen, damit ich diesen in der Query setzten kann?
P.S.: Dass es mit zwei Comboxen funktionieren würde ist mir klar. Ist aber bei einer Auswahl aus über 300 Kontakten nicht praktikabel. Ebenso hab ich bereits probiert den Value in einen Service als property zu übergeben.
<RULE>
<IF>
<PROPERTY name="FOCUS" source="st_phone"/>
</IF>
<SCHEDULE delay="500" id="testID" service="ContactFilterService">
<PARAM name="contact">
<PROPERTY name="VALUE" source="st_contact"/>
</PARAM>
</SCHEDULE>
<DO>
<PROPERTY name="query.contactId" source="st_phone"/>
</DO>
</RULE>
Das geht jedoch auch nicht aus folgenden Gründen:
WARN (de.espirit.firstspirit.forms.rules.FactService): Fact for parameter 'contact' is not serializable: de.espirit.firstspirit.client.access.editor.DatasetEditorValueImpl$DatasetContainerImpl@cd227b16
Schöne Grüße
Dominik
Hallo Marian,
ja hatte ich aber hilft mir nicht wirklich. Wie gesagt das es mit zwei Comboboxen geht ist mir bewusst und die Eigenschaft ENTRY ist ja auch nur bei Comboboxen und Radiobuttons möglich da dort mit Options gearbeitet wird. (Ich hatte es natürlich trotzdem mal ausprobiert, jedoch ohne Erfolg aus den genannten Gründen).
Da ich ansonsten noch keine Antwort bekommen habe, muss ich wohl davon ausgehen das es FS seitig nicht möglich ist das gewünschte Verhalten umzusetzen.
Gruß
Dominik
Hallo Dominik,
entschuldige, dass du noch keine weitere Antwort bekommen hast - wir haben das Thema intern weitergegeben und warten selbst noch auf eine Rückmeldung.
Grüße,
Hannes
Hallo Dominik,
es sieht derzeit so aus, als wäre die Funktionalität, die du benötigst derzeit einfach nicht umgesetzt oder verfügbar. Ich würde dir empfehlen ein entsprechendes feature request zu stellen.
Viele Grüße
Martin