Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Matze84 am 02.04.13 - 12:15:26

Titel: computedField DataBinding
Beitrag von: Matze84 am 02.04.13 - 12:15:26
Guten Morgen zusammen!

Ich stehe mal wieder vor einem XPages- spezifischen Problem ??? ???

Ich habe eine XPage mit einem computedField. Dieses bekommt über eine Button-Action einen Wert zugewiesen und soll diesen Wert beim Speichern der XPage in die Maske (Data Source) speichern.  Aktuell habe ich das ganze über das Simple Data Binding an ein Feld auf der Maske gebunden.
Das Problem ist jetzt, dass der Wert des computedFields beim Speichern nicht in der Maske auftaucht, sondern das Feld leer bleibt.

Funktioniert das grundsätzlich nicht?

Hier mal den Code einer Test-XPage, mit der ich das ganze gestestet habe:
Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
	<xp:this.data>
		<xp:dominoDocument var="document1" formName="Test"></xp:dominoDocument>
	</xp:this.data>


	Berechnetes Feld:&#160;
	<xp:text escape="true" id="computedField1" value="#{document1.TestTX}"></xp:text>
	<xp:button value="Setze Wert" id="button2">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="partial" refreshId="computedField1">
			<xp:this.action><![CDATA[#{javascript:getComponent("computedField1").setValue("setze Wert");}]]></xp:this.action>
		</xp:eventHandler></xp:button>
	<xp:br></xp:br>
	<xp:br></xp:br>Referenz Edit Box:&#160;
	<xp:inputText id="EditBox" value="#{document1.Test2TX}"></xp:inputText>
	<xp:br></xp:br>
	<xp:br></xp:br>
	<xp:br></xp:br>
	<xp:button value="Submit" id="button1">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="complete" immediate="false" save="true"></xp:eventHandler>
	</xp:button>
	<xp:br></xp:br>
	<xp:br></xp:br>
	<xp:br></xp:br>
	<xp:br></xp:br>
	</xp:view>

Gruß

Matthias
Titel: Re: computedField DataBinding
Beitrag von: Sven Hasselbach am 02.04.13 - 12:29:04
Ein computedField ist readOnly und wird daher nicht in die Datenquelle übertragen. Du kannst den Wert der Datenquelle direkt setzen, dann wird die Änderung auch ins Dokument übertragen:

Code
	<xp:button value="Setze Wert" id="button2">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="partial" refreshId="computedField1">
			<xp:this.action><![CDATA[#{javascript:document1.setValue("TestTX", "setze Wert");}]]></xp:this.action>
		</xp:eventHandler>
	</xp:button>
Titel: Re: computedField DataBinding
Beitrag von: Matze84 am 02.04.13 - 12:32:00
Ein computedField ist readOnly und wird daher nicht in die Datenquelle übertragen. Du kannst den Wert der Datenquelle direkt setzen, dann wird die Änderung auch ins Dokument übertragen:

Code
	<xp:button value="Setze Wert" id="button2">
		<xp:eventHandler event="onclick" submit="true"
			refreshMode="partial" refreshId="computedField1">
			<xp:this.action><![CDATA[#{javascript:document1.setValue("TestTX", "setze Wert");}]]></xp:this.action>
		</xp:eventHandler>
	</xp:button>

Danke für die rasche Antwort!

Wird beim Setzen des Wertes über document1.setValue() bereits ein Save des Backend-Documents durchgeführt?
Titel: Re: computedField DataBinding
Beitrag von: Sven Hasselbach am 02.04.13 - 12:42:55
Zitat
Wird beim Setzen des Wertes über document1.setValue() bereits ein Save des Backend-Documents durchgeführt?
Nein, nur der Wert der Datenquelle geändert. Die Datenquelle ist wie das NotesUIDocument.
Titel: Re: computedField DataBinding
Beitrag von: Matze84 am 02.04.13 - 13:22:26
Danke! ;D