2013-07-02 42 views
0

我想创建一个自定义控件,其中显示3列, 列1,从复选框中选择的值(这是好的) 第2列,可编辑框,这是显示,但不工作100% 第3列,删除行的按钮(还有待完成)XPages - 重复控制 - 获取项目值

到目前为止: 选择选项后,单击“创建行”按钮,每行选中一行。

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

实施例的代码是在此URL:

http://snipt.org/AAgd3

回答

3

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

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

+0

谢谢,我下载了示例并按照步骤操作,得到Error 500 HTTP Web服务器:命令未处理异常。在你的开发数据库中的 –

+1

步骤1后面会看到这个问题:打开标准错误页面,所以它清楚地说明了什么是错误的。顺便说一句。代码来自练习,你必须做的事情(它是23号,所以可能取决于前面的步骤),而不是你复制和粘贴的东西。 – stwissel

0

如果你想动态地绑定它们,你也可以用表达式语言来做到这一点。为了使字段可编辑,需要一些时间来解决,但我解决它的方式是将计算的ID传递到自定义控件中,然后将其用于绑定。

例如:如果我使用唯一零件名称列表,我可以将自定义控件传递给一个评论变量。如果我将它作为fieldNameComment传递给我的自定义控件,则可以通过以下代码动态地将其绑定到inputText元素。

我正在使用作为dataSource传入的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中的值绑定到定制控件中的输入的一系列FieldNames,称为DynamicTableRow

+0

谢谢,我试着将Collection Name改为CurrRow,但值保存后消失了,所以我不能使用CurrRow.getColumnValue(“key2”)? –

+0

对不起,CurrRow.getColumnValue(“key2”)指向我使用视图遍历预先计算的值。这可以是任何你想要绑定数据的字符串。我还应该补充说,我的代码只在将数据传递给自定义控件时才起作用,而您自己的代码似乎并不适用。我会编辑我的代码,使其更清晰一些。 –

+0

嗯。听起来你根本没有自定义控件,但是你正在将值传递给重复控件。我从来没有任何运气在重复控制之外动态地关联值绑定。我建议尝试在重复控制内创建自定义控件并传递计算值。 –