2014-09-11 63 views
1

我有一个xpages,我有一个重复控制,我添加了一个按钮来增加重复次数。 在重复中,我有一个inputText和一个ComputedField。我想获取每个inputText的ID并对它做些什么,或许添加它们。我给重复添加了一个索引,我的inputText的标签是:input $(index)。我想访问getComponent(“输入”+索引),但它说:getComponent为null。为什么?Xpages重复控制获取inputText的ID

什么是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> 

我有第一个inputText与id号,其中是初始数字。然后重复有一个输入文本和一个计算字段,显示重复中的“数字”,第一个inputText和inputText之间的差异。 然后,如果用户单击按钮时,重复显示一个新的inputText,并且与该字段相关的计算字段的结果应为:(number)-1st inputText in the repeat - 2nd inputText in the field。

感谢,

+0

您能告诉我们业务需求是什么,而不是技术方法?我在你评论David的回答时看到了技术方法,但我不明白你为什么要加减。 – 2014-09-11 14:20:48

+0

哦,我们能看到实际的代码吗? – 2014-09-11 14:41:07

+0

@DavidNavarre我更新了我的问题。谢谢 – 2014-09-12 07:44:52

回答

0

我不知道这是最好的办法。我从来没有像这样从重复控制中获取数据。我会尽快回到磁盘并以这种方式进行计算。

假设您希望这些总数超出重复控制范围,我将拥有一个SSJS或Java函数来获取总计并以此方式呈现。其实你可以在重复控制中做到这一点。您可以使用多米诺骨牌对象模型来收集您的文档...在那时做任何计算并将结果存储在viewScope中,然后返回到所选文档的重复控制viewEntryCollection ...

+0

我想使用重复在inputText中添加值,然后在同一个重复中,我有一个computedField,我希望减去每个输入字段的值。例如,当我添加一个值为200的inputText时,我有一个数字1000,结果将是800,然后当我添加另一个具有100值的输入,第二个计算的字段具有值700时,依此类推。 – 2014-09-11 11:32:58