Autor Thema: xe:dialog nacheinander aufrufen  (Gelesen 3219 mal)

Offline Fineas

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • PCLP Dev/Admin 5,6,7,8
xe:dialog nacheinander aufrufen
« am: 16.05.13 - 17:49:07 »
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
« Letzte Änderung: 17.05.13 - 08:09:34 von Fineas »

Offline Fineas

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • PCLP Dev/Admin 5,6,7,8
Re: xe:dialog nacheinander aufrufen
« Antwort #1 am: 11.06.13 - 14:30:26 »
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

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: xe:dialog nacheinander aufrufen
« Antwort #2 am: 12.06.13 - 08:34:21 »
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>

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz