Autor Thema: Mobile Controls - Button zum Aufruf einer anderen AppPage  (Gelesen 2762 mal)

Driri

  • Gast
Hallo,

ich bastele gerade an der Umsetzung einer bestehenden Anwendung für den Einsatz auf Smartphones/Tablets und nutze dafür die MObile Controls der Extension Library.

Jetzt fehlt mir noch die Suche. Dafür wollte ich eine gesonderte AppPage mit einem Eingabefeld und einem Button zum Starten der Suche haben. Über den Button soll dann eine andere AppPage aufgerufen werden, die das Ergebnis der Suche anzeigt.

Ich bekomme es aber nicht hin, einen Button in die AppPage zu setzen, der das moveTo zur zweiten AppPage durchführt.

Mein aktueller Versuch sieht so aus :

Code
<xe:appPage id="appPage34" pageName="searchPage" preload="true" resetContent="true">
			<xe:djxmHeading id="djxmHeading34" label="Search..." back="Home" moveTo="home">
			</xe:djxmHeading>
			<xp:inputText id="searchInput" value="#{sessionScope.searchValue}">
			</xp:inputText>
			<xp:button value="Search" id="button1" refreshMode="complete" type="submit">
				<xp:eventHandler event="onclick" submit="true">
					<xp:this.action>
						<xe:moveTo targetPage="searchResult"></xe:moveTo>
					</xp:this.action>
				</xp:eventHandler>
			</xp:button>
		</xe:appPage>

Der Eingabewert landet korrekt in der sessionScope-Variable. Wenn ich dann aber auf den Button drücke, kommt zuerst die Meldung "xhr canceled" und dann bekomme ich als Fehlerseite einen "Unerwarteten Laufzeitfehler" angezeigt.

Wenn ich als targetPage "#searchResult" setze, kommt es ebenfalls zum Fehler.

Weiß jemand, ob das funktioniert oder ob ich da einen Fehler drin habe oder ob es eine bessere/andere Lösung gibt ?


P.S: Ich habe die Frage auch bei StackOverflow gepostet.
http://stackoverflow.com/questions/12509054/extlib-mobile-controls-how-to-build-a-button-to-switch-to-an-apppage

Driri

  • Gast
Re: Mobile Controls - Button zum Aufruf einer anderen AppPage
« Antwort #1 am: 25.09.12 - 15:13:46 »
Ich habe es nach etlichen Versuchen jetzt aufgegeben, den Button zum Laufen zu bekommen. Als Workaround habe stattdessen jetzt eine Lösung über ein Static Line Item umgesetzt.

Finde ich persönlich zwar unschön, aber wenigstens funktioniert das so. Ich vermute das Problem mit dem Button irgendwo in der Art, wie die Mobile Pages in der Single Page Application aufgerufen werden. Das MoveTo scheint im Button nicht zu funktionieren.

Quellcode der Mobile Page zur Eingabe des Suchbegriffs :

Code
<xe:appPage id="appPage34" pageName="searchPage" preload="true" resetContent="true">
			<xe:djxmHeading id="djxmHeading34" label="Search..." back="Home" moveTo="home">
			</xe:djxmHeading>
			<xp:inputText id="searchInput" value="#{sessionScope.searchValue}">
				<xp:eventHandler event="onblur" submit="true" refreshMode="complete">
					<xp:this.action>
						<xp:executeScript>
							<xp:this.script><![CDATA[#{javascript:var svalue = getComponent("searchInput").getValue(); sessionScope.put("searchValue",svalue);}]]></xp:this.script>
						</xp:executeScript>
					</xp:this.action>
				</xp:eventHandler>
			</xp:inputText>
			<xp:br></xp:br>
			<xp:br></xp:br>
			<xe:djxmLineItem id="djxmLineItem41" label="Start Search..." moveTo="#searchResult">
			</xe:djxmLineItem>
		</xe:appPage>

In der Mobile Page zur Anzeige des Suchergebnisses lese ich in einem Repeat Control die sessionScope Variable aus, setze damit eine Volltextsuche ab und nutze die Document Collection dann als Datenquelle für das Repeat Control.

Code
<xp:repeat id="repeat31" rows="30" var="rowData" indexVar="index">

<xp:this.value><![CDATA[#{javascript:var svalue = sessionScope.get("searchValue"); 
var database:NotesDatabase = session.getCurrentDatabase();
if (database.isFTIndexed()) {
	database.updateFTIndex(false)
} else {
	database.createFTIndex(0,true)
}
var dc = database.FTSearch(svalue);
return dc;}]]>
</xp:this.value>

<xe:djxmLineItem id="djxmLineItem40">

<xe:this.label><![CDATA[#{javascript:var doc:NotesDocument = rowData;
var retvalue = doc.getItemValueString("Subject");
return retvalue;}]]>
</xe:this.label>

<xe:this.moveTo><![CDATA[#{javascript:var doc:NotesDocument = rowData;
var returndocid = doc.getUniversalID();
var returl = "#docPageSearch" + "&documentId=" + returndocid + "&action=openDocument";
return returl;}]]>
</xe:this.moveTo>

</xe:djxmLineItem>
</xp:repeat>

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz