Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: Froem1991 am 13.09.12 - 08:24:24

Titel: ComboBox mit editierbaren Werten
Beitrag von: Froem1991 am 13.09.12 - 08:24:24
Guten Morgen,
ich sitze nun schon seit längerer Zeit an einem Problem. Dies bezieht sich auf eine ComboBox, die ich in XPages benutzen möchte.
Diese ComboBox soll feste Werte besitzen, jedoch soll es auch möglich sein Einträge hinzu zu fügen, und diese ebenfalls in der Combobox für das nächste mal zu speichern.
Die Maske sieht so aus:
(http://www.imgbox.de/users/public/images/jRFMZXrOAo.PNG)

Dort wo "Combobox" steht soll die Combobox hin.

Ich hatte mir nochmal eine zweite Variante ausgesucht, um dieses Problem zu lösen und dachte mir, die Werte eventuell über ein zweites Feld und einen Button hinzu zu fügen. Ist das möglich?

Ich würde mich über Lösungen freuen egal ob es zu der Variante mit dem Button und dem zweiten Feld ist oder zu der "editierbaren" Combobox.

Vielen Dank, liebe Grüße und einen schönen Tag noch!  :P
Titel: Re: ComboBox mit editierbaren Werten
Beitrag von: eknori am 13.09.12 - 08:43:52
http://blog.hughesconnect.com/?p=149 ( mit den Ergänzungen in den Kommentaren )
Titel: Re: ComboBox mit editierbaren Werten
Beitrag von: Sven Hasselbach am 13.09.12 - 09:59:52
Alternativ dazu mit Eingabe-Feld:

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"></xp:dominoDocument>
	</xp:this.data>
	
	<xp:div id="refreshMe">
		<xp:comboBox id="comboBox1"
			value="#{document1.selectedValue}">
			<xp:selectItem itemLabel="A"></xp:selectItem>
			<xp:selectItem itemLabel="B"></xp:selectItem>
			<xp:selectItem itemLabel="C"></xp:selectItem>

			<xp:selectItems>
				<xp:this.value>
					<![CDATA[#{javascript:
					try{
						document1.getItemValueArray("selectedValue");
					}catch(e){}
					}]]>
				</xp:this.value>
			</xp:selectItems>
		</xp:comboBox>

		<xp:inputText id="inputText1"
			value="#{requestScope.newValue}">
		</xp:inputText>
		<xp:br/>
		<xp:button value="Add" id="buttonAdd">
			<xp:eventHandler event="onclick" submit="true"
				refreshMode="partial" refreshId="refreshMe" disableValidators="true"
				execMode="partial" execId="refreshMe">
				<xp:this.action>
					<![CDATA[#{javascript:
						var combo = getComponent('comboBox1');
						var value = requestScope.get("newValue");
						var clist  = combo.getChildren();
						var item = new com.ibm.xsp.component.UISelectItemEx();
						item.setItemLabel(value);
						item.setItemValue(value);
						clist.add( item );
						combo.setValue( value );
					}]]>
				</xp:this.action>
			</xp:eventHandler>
		</xp:button>
	</xp:div>

	<xp:button value="Save" id="buttonSave">
		<xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true" />
	</xp:button>
	
</xp:view>

Wichtig ist hierbei die Frage, was Du mit "für das nächste Mal zu speichern" meinst: Soll die Liste nur für das gespeicherte Dokument gelten (dann ist das wie hier in dieser Lösung), oder soll es für alle Dokumente gelten (dann muss das letzte Item in der Liste über eine Ansicht befüllt werden).