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.