tags:

views:

65

answers:

1

I have a main instance named 'myinstance' which has the element color. Color can be 'Red', 'Blue', 'Green' or ''Yellow'. The colors are populated in a drop-down from another instance called 'colorsinstance'. When my form loads, I want the default in the dropdown to be set to 'Green' in the nodeset binding.

<instance id="colorsinstance">  
    <items>
        <item label="Color1" value="Red"/>
        <item label="Color2" value="Blue"/>
        <item label="Color3" value="Green"/>
        <item label="Color4" value="Yellow"/>
    </items>
</instance>

Main instance binding is as follows:

<xforms:bind nodeset="instance('myinstance')">
    <xforms:bind nodeset="./color" required="true()"/>
</xforms:bind>
+2  A: 

The default value of the dropdown will reflect the value stored in the instance. You can either put the default directly in your instance, e.g.:

<color>Green</color>

Or you can set the value using setvalue, e.g. this in your model:

<xforms:setvalue ev:event="xforms-model-construct-done"
                 ref="color">Green</xforms:setvalue>

Updated following your comment: if you want to use the Orbeon Forms xxforms:default extension, then try:

<xforms:bind nodeset="./color" required="true()" xxforms:default="'Green'"/>

Also updated to reflect the fact that instance data must contain "Green", not "Color3".

ebruchez
@ebruchez - Agreed, I could do it this way. But I have specific instructions to set the default value only in nodeset binding using xxforms:default. I need to set the value of instance('myinstance')/color = Green by taking the value 'Green' from the colorsinstance.
Purni
@ebruchez - Thanks! That works.
Purni