XPages - 重复控制 - 获取项目值

时间:2013-07-02 22:46:20

标签: xpages lotus

我想创建一个显示3列的自定义控件, 第1列,从复选框中选择的值(这没关系) 第2列,可编辑框,显示但不能正常工作100% 第3列,删除行的按钮(仍有待完成)

到目前为止: 选择选项后,单击“创建行”按钮,每个选定选项都会显示1行。

问题: 仅使用可编辑框中的最后一个值,如何从每个框中获取值? getComponent(“inputText1”)。getValue()仅显示最后一个值。

示例代码位于以下网址:

http://snipt.org/AAgd3

2 个答案:

答案 0 :(得分:3)

将列值绑定到数组变量。练习23有一个完整的工作示例:http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Tutorial-Introduction-to-XPages-Exercise-23

您只需将其调整为数据的来源/目的地即可。让我们知道它是怎么回事

答案 1 :(得分:0)

如果要动态绑定它们,也可以使用表达式语言执行此操作。为了让字段可编辑,需要花点时间,但我解决它的方法是将计算出的ID传递给自定义控件,然后将其用于绑定。

例如:如果我正在处理一个唯一的部件名称列表,我可以将一个变量传递给我的自定义控件。如果我将它作为fieldNameComment传递给我的自定义控件,我可以通过以下代码动态地将它绑定到inputText元素。

我正在使用传入的DominoDocument作为dataSource。

调用自定义控件:

<xp:repeat var="CurrVal" value="#{DataSource}">
    <xc:DynamicTableRow dataSource="#{EmissionsDocument}">
       <xc:this.fieldNameComment><![CDATA[#{javascript:CurrVal+"Comment"}]]></xc:this.fieldNameComment>
    </xc:DynamicTableRow>
</xp:repeat>

自定义控件内:

<xp:inputText id="inputText5" 
    value="#{compositeData.dataSource[compositeData.fieldNameComment]}">
</xp:inputText>

只要(由于某种原因)在表达式语言语法中没有执行任何字符串计算,这将产生可编辑字段。在我的测试中,如果我尝试通过连接任何字符串来计算值,则该字段将被绑定,但在任何情况下都不会显示为可编辑。如果你想直接绑定到字段,这可能是一个很好的方法,但如果你想保存你的数组并通过java解析它,那么Stephan的解决方案也很有效希望这有帮助!

附加:添加重复控件以显示数据源的迭代。数据源的每次迭代都会生成一个值CurrVal,其中附加了字符串“Comment”。这将创建一系列基于DataSource中的值的FieldNames,这些值绑定到名为DynamicTableRow的自定义控件中的输入