Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
ExtLib / Mobile Controls - Umsetzung von Kategorien als Auswahl
Driri:
Hallo,
Domino 8.5.3 mit Upgrade Pack 1 kommt hier zum Einsatz. Ich versuche gerade, eine bestehende Anwendung via XPages und die Mobile Controls der ExtLib/des Upgrade Packs für den Einsatz auf Tablets bzw. Smartphones "aufzuhübschen".
Zugrunde liegt eine View mit 3 Kategorieebenen. Die Darstellung der kategorisierten View in einer Data View ist so nicht gewünscht und soll daher durch mehrere Auswahllisten mit den jeweiligen Kategorien ersetzt werden.
Ablauf beim Start der Anwendung wäre dann in etwa so :
- Auswahlliste mit Kategorien der ersten Ebene
- Auswahl einer Kategorie schreibt den Wert in eine Scope Variable
- Öffnen einer Auswahlliste mit allen Kategorien der zweiten Ebene, passend zur gewählten Kategorie 1
- Auswahl einer Kategorie schreibt den Wert in eine Scope Variable
- Öffnen einer Auswahlliste mit allen Kategorien der dritten Ebene, passend zur gewählten Kategorie 1+2
- Auswahl einer Kategorie schreibt den Wert in eine Scope Variable
- Öffnen einer Ansicht mit einem Filter über die drei gewählten Kategorien
Den ersten Punkt bekomme ich ohne Probleme umgesetzt, das sieht dann so aus :
--- Code: ---<xe:appPage id="appPage6" pageName="vvaByCategory" preload="true" resetContent="true">
<xe:djxmHeading id="djxmHeading8" label="choose category" back="Back" moveTo="home">
</xe:djxmHeading>
<xp:repeat id="repeat1" rows="30" var="rowData" indexVar="index">
<xp:this.value><![CDATA[#{javascript:@Unique(@DbColumn("","xVVAByCategory",1));}]]></xp:this.value>
<xe:djxmLineItem id="djxmLineItem6" label="#{javascript:rowData}" transition="slide" moveTo="#vvaByCategory2">
</xe:djxmLineItem>
</xp:repeat>
</xe:appPage>
--- Ende Code ---
Das Problem ist, daß ich an dieser Stelle das Label des gewählten Eintrags aus der Liste bzw. den aktuellen Wert aus rowData für diesen Eintrag nicht ermitteln und in eine Scope Variable schreiben kann. Oder ich weiß nicht wie.
Das Problem ist auch in einem anderen Thread schon beschrieben, allerdings ohne Lösung :
http://atnotes.de/index.php?topic=54137.0
Ausprobiert habe ich schon die Abwicklung über xe:this.moveTo, allerdings mit dem selben Ergebnis, daß der letzte Wert aus der Datenquelle in der Scope Variable landet und nicht er Wert des gewählten Eintrags.
Ich habe auch versucht, einen Event Handler innerhalb des Controls einzubauen. Das funktioniert aber anscheinend überhaupt nicht. Ich bekomme zwar keinen Fehler, aber leider auch kein Ergebnis.
--- Code: ---<xp:eventHandler event="onClick" submit="true" refreshMode="complete">
<xp:this.action>
<xp:executeScript>
<xp:this.script><![CDATA[#{javascript:sessionScope.put("categoryPicker1", rowData);}]]>
</xp:this.script>
</xp:executeScript>
</xp:this.action>
</xp:eventHandler>
--- Ende Code ---
Hat jemand eine Idee dazu ? Ich würde das schon gerne über das Repeat Control und die Static Line Items lösen.
ata:
--- Zitat ---Ich bekomme zwar keinen Fehler, aber leider auch kein Ergebnis.
--- Ende Zitat ---
... das kenne ich - ich habe mir dann angewöhnt einen String anzuhängen - dann sehe ich wenigstens was in der ScopeVariablen landet ...
=> rowData + ""
... wäre so ein Versuch - eventuell kommt hier null zurück oder ähnliches
Driri:
Da kommt gar nichts an, also die Scope Variable bleibt leer. Das läßt vermuten, daß der Event Handler an dieser Stelle ignoriert wird.
ata:
... schreibst du was explizit rein?
Driri:
Im Event Handler testweise schon. Darum denke ich ja, daß der da gar nicht berücksichtigt wird. Sonst müßte zumindest der statische Inhalt der Scope angezeigt werden.
Zum besseren Verständnis : Ich habe den dynamischen Teil der Zuweisung durch einen statischen ergänzt.
--- Code: ---<xp:this.script><![CDATA[#{javascript:sessionScope.put("categoryPicker1", "~~" + rowData);}]]>
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln