我的主要目标是将两个字段相乘并在另一个计算字段(里程字段)中显示/保存答案。我想将计算字段totalKM(不是表单)乘以编辑框字段perKM(在表单中)默认为.52。
为方便起见,我在下面附上了所有字段。
<xp:table>
<xp:tr>
<xp:td>
<xp:label value="Mileage:"
id="mileage_Label1" for="mileage1">
</xp:label>
</xp:td>
<xp:td>
<xp:text escape="true" id="mileage">
<xp:this.converter>
<xp:convertNumber type="number"></xp:convertNumber>
</xp:this.converter>
<xp:this.value>
<![CDATA[#{javascript:return claimDoc.getItemValue("perKM");}]]>
</xp:this.value>
</xp:text>
</xp:td>
<td></td>
<td></td>
</xp:tr>
<xp:tr>
<xp:td>
<xp:label value="Total KM" id="label1"></xp:label>
</xp:td>
<xp:td>
<xp:text escape="true" id="totalKM"
style="font-weight:bold">
<xp:this.value>
<![CDATA[#{javascript:var cView:NotesView = database.getView("expenses");
var nav:NotesViewNavigator = cView.createViewNav();
var entry:NotesViewEntry = cView.getEntryByKey((@Name("[CN]",context.getUser().getDistinguishedName())),true);
entry = nav.getPrev(entry);
if (entry == null ) {
//donothing
}
else {
return entry.getColumnValues()[2];
} }]]>
</xp:this.value>
</xp:text>
</xp:td>
<xp:td>
by
<xp:inputText id="inputText1"
style="width:30px" value="#{claimDoc.perKM}"
defaultValue=".52">
<xp:this.converter>
<xp:convertNumber type="number"></xp:convertNumber>
</xp:this.converter>
</xp:inputText>
cents
</xp:td>
<xp:td>
</xp:td>
</xp:tr>
</xp:table>
答案 0 :(得分:0)
您可以通过使用java和托管bean来实现此目的。这不是你能做到的唯一方法,但我会以最好的方式冒险。
您应该直接将字段绑定到托管bean,如下所示:
使用编辑框创建字段(即使是不可编辑的结果)
在托管java bean中,对于要自动计算的值,请执行以下操作:
您需要做的最后一件事是创建部分更新以刷新容纳您要计算的字段的容器。它可以与可编辑字段位于相同或不同的容器中。
这是我撰写的博客文章的链接,描述了我如何实现这一点:http://notesspeak.blogspot.com/2013/06/dynamic-computed-values-in-xpage.html
如果您之前没有使用过托管bean或java,那么值得花时间在Connect 2013上观看有关托管bean的两小时课程.Russ Maher是一位优秀的老师。 http://ibmtvdemo.edgesuite.net/software/lotus/connect_2013/01-Sunday/JMP402/JMP402.html
还有很多博客文章,以及9个视频中的笔记。