Xpages repeat control获取inputText的id

时间:2014-09-11 11:06:29

标签: input xpages repeat xpages-ssjs

我有一个xpages,我有一个重复控件,我添加了一个按钮来增加重复次数。 在重复中我有一个inputText和一个ComputedField。我想获取每个inputText的ID并使用它做一些事情,也许添加它们。我为repeat添加了一个索引,inputText的标签是:input $(index)。我想用getComponent访问("输入" +索引),但它说:getComponent为null。为什么呢?

inputText id是什么?

P.S。这是代码:

<xp:this.beforePageLoad><![CDATA[#{javascript:sessionScope.dynaField=parseInt("1")}]]></xp:this.beforePageLoad>

    <xp:div style="text-align:center">
        <xp:inputText id="number" defaultValue="100">
            <xp:this.converter>
                <xp:convertNumber type="number" integerOnly="true"></xp:convertNumber>
            </xp:this.converter>
        </xp:inputText></xp:div>
    <xp:panel id="Panel_All" style="text-align:center">


        <xp:repeat id="repeat1" var="testCollection" indexVar="index"
            value="#{javascript:parseInt(sessionScope.dynaField)}" rows="120"
            style="border:1pt" repeatControls="false" first="0">
            <xp:inputText id="input${index}">

                <xp:eventHandler event="onchange" submit="true"
                    refreshMode="partial" refreshId="repeat1">
                </xp:eventHandler>
            </xp:inputText>


            <xp:text escape="true" id="comp">

                <xp:this.value><![CDATA[#{javascript:var repeatValue = getComponent("repeat1").getValue();
var number1 = getComponent("number").getValue();
var number2 = getComponent("input").getValue();

return number1-number2;
}]]></xp:this.value>
            </xp:text>

            <xp:br></xp:br></xp:repeat>



        <xp:br></xp:br>


        <xp:br></xp:br>
        <xp:table style="width:100%">

            <xp:tr>
                <xp:td colspan="2" style="text-align:center">
                    <xp:button value="Add Document" id="button1">
                        <xp:eventHandler event="onclick" submit="true"
                            refreshMode="partial" refreshId="Panel_All">
                            <xp:this.action><![CDATA[#{javascript:sessionScope.dynaField=parseInt(sessionScope.dynaField)+1
getComponent("repeat1").setValue(parseInt(sessionScope.dynaField));}]]></xp:this.action>
                        </xp:eventHandler>
                    </xp:button>

                </xp:td>

            </xp:tr>
        </xp:table>
        </xp:panel>

我有第一个带有id号的inputText,其中是初始号码。然后重复有一个输入文本和一个计算字段,显示&#34;数字&#34;,第一个inputText和重复中的inputText之间的差异。 然后,如果用户单击按钮,则在repeat中显示一个新的inputText,并且与该字段相关的计算字段的结果应为:( number)-1d中的inputText - 字段中的第二个inputText。

谢谢,

1 个答案:

答案 0 :(得分:0)

我不确定这是最好的方法。我从不像那样从重复控制本身中提取数据。我很快就会回到磁盘上并按照这种方式进行计算。

假设你想要在重复控制之外的这些总数我有一个SSJS或Java函数来获得总数并且只是以这种方式呈现它。实际上你真的可以在重复控制中做到这一点。您可以使用多米诺骨牌对象模型来收集您的文档...在那时进行您想要的任何计算并将结果存储在viewScope中,然后返回到重复控制所选文档的viewEntryCollection ......