Serverseitig lassen sich die die Items einer Auswahlbox (z.B. eine Combobox, Listboxen, usw.) auslesen und ggf. manipulieren. Hier eine Combobox mit drei Items:
<xp:comboBox id="comboBox1"> <xp:selectItem itemLabel="A" itemValue="1"></xp:selectItem> <xp:selectItem itemLabel="B" itemValue="2"></xp:selectItem> <xp:selectItem itemLabel="C" itemValue="3"></xp:selectItem> </xp:comboBox>
Um via SSJS die Items der UI Komponente und deren Eigenschaften zu erhalten, kann man wie folgt darauf zu greifen:
function listSelectableValues( id ) { var cBox = getComponent( id ); var cList:java.util.ListIterator; cList = ComboBox.getChildren().listIterator(); while (ChildrenList.hasNext()) { var c = ChildrenList.next() print ("Label: " + c.getItemLabel() ); print ("Value: " + c.getItemValue() ); print ("IsDisabled: " + c.isDisabled() ); } } listSelectableValues( 'comboBox1' );
Auf der Serverkonsole werden nun die Eigenschaften der drei Items ausgegeben.
Natürlich lassen sich die Items auch manipulieren:
<xp:button value="Label" id="button1"> <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="comboBox1"> <xp:this.action><![CDATA[#{javascript: var cBox = getComponent( 'comboBox1' ); var cBoxChildren = cBox.getChildren(); var cBoxChild = cBoxChildren.get(0); // --- disablen cBoxChild.setItemDisabled(true); // --- das Label ändern cBoxChild.setItemLabel("DISABLED"); // --- den Value ändern cBoxChild.setItemValue("disabled"); }]]></xp:this.action> </xp:eventHandler> </xp:button>
Der Button führt einen PartialRefresh auf die ComboBox aus, deaktiviert das erste Item (es ist nicht mehr selektierbar) und ändert sowohl das Label als auch den Wert des ersten Items.