1

我已经能够使用此处描述的技术成功创建动态字段名称并保存输入字段的值:http: //lpar.ath0.com/2014/04/07/repeated-xpages-input-controls-with-数字索引字段名称/

我还有一个计算字段,它有一个数字索引名称,但其值是根据关键字选择计算的。我可以为它分配动态字段名称,如下所示:

<xp:text escape="true" id="computedField1">
    <xp:this.value><![CDATA[#{compositeData.dataSource[compositeData.fieldName2]}]]></xp:this.value>
</xp:text>

该字段的属性定义如下所示:

在此处输入图像描述

并且对复合控件的调用如下所示:

<xc:cc_dynamicAssetItems 
row="#{(rownum lt 10)? '0':''}#{rownum}"
dataSource="#{document1}"
fieldName1="replace#{(rownum lt 10)? '0':''}#{rownum}"
fieldName2="budget#{(rownum lt 10)? '0':''}#{rownum}" >
</xc:cc_dynamicAssetItems>

但是,我不知道如何将值传递给这个计算字段。它的 SSJS 应该是:

var projectNumber = getComponent("ProjectNumber").getValue();
if(projectNumber == ""){
return "Nothing found";
}else{
return projectNumber + "A";
}

我会很感激一些方向。

谢谢,

4

2 回答 2

1

您应该设置底层数据源的值,而不是设置组件的值。这意味着您的逻辑不应在您的计算域中运行,而不是在ProjectNumber组件的 onChange 事件中运行。然后你只需要更新例如document1.budget01,这要快得多。

作为替代方案,您仍然可以将方法绑定*传递给您的自定义控件,如下所述:将javascript 代码传递给自定义控件

(*:在您的情况下是值绑定)

于 2016-01-30T08:56:17.080 回答
-1

你试过用javascript代替表达语言吗

例如:fieldName1="#{javascript:'replace'+(rownum > 10?'0':'')+rownum}"

于 2016-01-30T13:40:20.643 回答