Xpages计算组合框编号值以保存其标签

时间:2014-10-12 22:03:02

标签: xpages xpages-ssjs

我有一个组合框,其中包含标签文本和值的数字。我想计算组合框的值来保存文本(标签),创建我自己的库。我正在学习xpages请帮帮我。提前致谢。

<xp:comboBox id="comboBox2"
    value="#{document1.status}" style="width:76.0px">
    <xp:this.validators>
        <xp:validateExpression
            message="Please select status.">
            <xp:this.expression><![CDATA[#{javascript:!getComponent("comboBox2").getSubmittedValue().equalsIgnoreCase("-select-")}]]></xp:this.expression>
        </xp:validateExpression>
    </xp:this.validators>
    <xp:selectItem
        itemLabel="-Select-">
    </xp:selectItem>
    <xp:selectItem itemLabel="Requested" itemValue="10">
    </xp:selectItem>
    <xp:selectItem
        itemLabel="Next Release" itemValue="20">
    </xp:selectItem>
    <xp:selectItem
        itemLabel="Scheduled" itemValue="30">
    </xp:selectItem>
    <xp:selectItem
        itemLabel="Awaiting Additional Info" itemValue="40">
    </xp:selectItem>
    <xp:selectItem
        itemLabel="In Development" itemValue="50">
    </xp:selectItem>


</xp:comboBox>

1 个答案:

答案 0 :(得分:0)

Sven Hasselbach写了一个函数来获取所选的标签值。我用你发布的代码对它进行了测试,结果正常:

http://www-10.lotus.com/ldd/xpagesforum.nsf/xpTopicThread.xsp?documentId=20F1270812F4BD55852579890054C09F

<xp:comboBox id="comboBox2" style="width:76.0px">
    <xp:this.validators>
        <xp:validateExpression message="Please select status.">
            <xp:this.expression><![CDATA[#{javascript:!getComponent("comboBox2").getSubmittedValue().equalsIgnoreCase("-select-")}]]></xp:this.expression>
        </xp:validateExpression>
    </xp:this.validators>
    <xp:selectItem itemLabel="-Select-">
    </xp:selectItem>
    <xp:selectItem itemLabel="Requested" itemValue="10">
    </xp:selectItem>
    <xp:selectItem itemLabel="Next Release" itemValue="20">
    </xp:selectItem>
    <xp:selectItem itemLabel="Scheduled" itemValue="30">
    </xp:selectItem>
    <xp:selectItem itemLabel="Awaiting Additional Info" itemValue="40">
    </xp:selectItem>
    <xp:selectItem itemLabel="In Development" itemValue="50">
    </xp:selectItem>



    <xp:eventHandler event="onchange" submit="true" refreshMode="partial" refreshId="comboBox2">
        <xp:this.action><![CDATA[#{javascript:function getSelectedLabel( id ) {
   var ComboBox = getComponent( id );
   var value = ComboBox.value;

   var ChildrenList:java.util.ListIterator;
   ChildrenList = ComboBox.getChildren().listIterator();
   while (ChildrenList.hasNext()) {
      var Child = ChildrenList.next();

      /*** process computed / multiple values ***/
      if( typeof( Child ) == 'com.ibm.xsp.component.UISelectItemsEx' ){
         var hlp = Child.getValue();
         for( var i=0; i< hlp.length; i++ ){
             if( hlp[i].getValue() == value )
             return hlp[i].getLabel() ;
         }
      }

      /*** process single values ***/
      if( typeof( Child ) == 'com.ibm.xsp.component.UISelectItemEx' ){

      if( Child.getItemValue() == value )
          return Child.getItemLabel();
      }
   }
}

var value = getSelectedLabel("comboBox2")

view.postScript("console.log('" + value + "')")}]]></xp:this.action>
    </xp:eventHandler></xp:comboBox>

您可以在浏览器控制台中看到,如果单击标签,则会记录正确的标签值。

现在您可以访问&#34;值&#34;中的标签。变量