我想创建一个自定义控件,它显示 3 列,第 1 列,从复选框中选择的值(这没关系)第 2 列,可编辑框,这显示但不工作 100% 第 3 列,删除行的按钮(仍然待办)
到目前为止:选择选项后,单击“创建行”按钮,每个选定的选项都会出现 1 行。
问题:只使用可编辑框中的最后一个值,如何从每个框中获取值?getComponent("inputText1").getValue() 只显示最后一个值。
示例代码在此 URL 上:
我想创建一个自定义控件,它显示 3 列,第 1 列,从复选框中选择的值(这没关系)第 2 列,可编辑框,这显示但不工作 100% 第 3 列,删除行的按钮(仍然待办)
到目前为止:选择选项后,单击“创建行”按钮,每个选定的选项都会出现 1 行。
问题:只使用可编辑框中的最后一个值,如何从每个框中获取值?getComponent("inputText1").getValue() 只显示最后一个值。
示例代码在此 URL 上:
您将列值绑定到数组变量。练习 23 有一个完整的工作示例:http ://www-10.lotus.com/ldd/ddwiki.nsf/dx/Tutorial-Introduction-to-XPages-Exercise-23
您只需将其调整为数据的源/目标。让我们知道怎么回事
如果你想动态绑定它们,你也可以用表达式语言来做到这一点。为了使字段可编辑,需要花费一些时间,但我解决它的方法是将计算的 ID 传递给自定义控件,然后将其用于绑定。
例如:如果我正在使用一个唯一部件名称列表,我可以将一个用于注释的变量传递到我的自定义控件中。如果我将它作为 fieldNameComment 传递给我的自定义控件,我可以通过以下代码将它动态绑定到 inputText 元素。
我正在使用作为数据源传入的 DominoDocument。
调用自定义控件:
<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 中的值的字段名称,这些值绑定到名为 DynamicTableRow 的自定义控件中的输入