我想创建一个显示3列的自定义控件, 第1列,从复选框中选择的值(这没关系) 第2列,可编辑框,显示但不能正常工作100% 第3列,删除行的按钮(仍有待完成)
到目前为止: 选择选项后,单击“创建行”按钮,每个选定选项都会显示1行。
问题: 仅使用可编辑框中的最后一个值,如何从每个框中获取值? getComponent(“inputText1”)。getValue()仅显示最后一个值。
示例代码位于以下网址:
答案 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的自定义控件中的输入