Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
xe:dialog nacheinander aufrufen
(1/1)
Fineas:
Hallo zusammen,
gibt es eine elegante Lösung 2 oder mehrere Dialoge nacheinander aufzurufen?
Ziel soll es sein, im ersten Dialog eine Erklärung abzufragen und mit deren Bestätigung den Dialog zu schließen und einen weiteren Eingabedialog anzuzueigen. Das tut aber nicht. Ist der erste Dialog offen, zeigt der zweite nach dessen Schließen keine Reaktion.
Gruß, Heiko
Fineas:
Falls es jemanden interessiert:
Zwei Dialoge nacheinander funktionieren nach meinem bisherigen Erkenntnisstand nur mittels <iFrame>. Es wird also mindestens eine weitere XPage als Dialog benötigt, die dann mit der Parent-Page interagiert. Die Anregung kam durch ein anderes Problem, dem Dateiupload über Dialog, wofür es hier eine interessante Beschreibung gibt:
http://www.dominoguru.com/pages/xpage_fileupload_extlib_dialog_tutorial.html
Gruß, Heiko
Sven Hasselbach:
Mit der executeOnServer-Funktion und einem Serverseitigen Event sollte es doch auch gehen:
--- Code: ---<?xml version="1.0" encoding="UTF-8"?>
<xp:view
xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xp:button
value="Show"
id="buttonShowDialog1">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="partial">
<xp:this.action><![CDATA[#{javascript:getComponent("dialog1").show()}]]></xp:this.action>
</xp:eventHandler>
</xp:button>
<xe:dialog
id="dialog1"
onHide="executeOnServer('showDialog2', '#{id:dialog2}')">DIALOG 1</xe:dialog>
<xe:dialog
id="dialog2">DIALOG 2</xe:dialog>
<xp:scriptBlock
id="scriptBlockExecOnServer">
<xp:this.value>
<![CDATA[
var executeOnServer = function () {
// must supply event handler id or we're outta here....
if (!arguments[0])
return false;
// the ID of the event handler we want to execute
var functionName = arguments[0];
// OPTIONAL - The Client Side ID that you want to partial refresh after executing the event handler
var refreshId = (arguments[1]) ? arguments[1] : "@none";
var form = (arguments[1]) ? XSP.findForm(arguments[1]) : dojo.query('form')[0];
// OPTIONAL - Options object contianing onStart, onComplete and onError functions for the call to the
// handler and subsequent partial refresh
var options = (arguments[2]) ? arguments[2] : {};
// Set the ID in $$xspsubmitid of the event handler to execute
dojo.query('[name="$$xspsubmitid"]')[0].value = form.id + ':' + functionName;
XSP._partialRefresh("post", form, refreshId, options);
}
]]>
</xp:this.value>
</xp:scriptBlock>
<xp:eventHandler
event="eventShowDialog2"
id="showDialog2">
<xp:this.action><![CDATA[#{javascript:getComponent("dialog2").show()}]]></xp:this.action>
</xp:eventHandler>
</xp:view>
--- Ende Code ---
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln