【发布时间】:2015-12-02 05:51:29
【问题描述】:
在下面的代码中,我尝试使用来自视图中另一列的值来计算最后一列。
我不知道为什么这不起作用,一直返回默认值:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:viewPanel rows="30" id="viewPanel1" var="varWI">
<xp:this.facets>
<xp:pager partialRefresh="true" layout="Previous Group Next" xp:key="headerPager" id="pager1">
</xp:pager>
</xp:this.facets>
<xp:this.data>
<xp:dominoView var="view1" viewName="WorkItem">
<xp:this.categoryFilter><![CDATA[#{javascript:"F832F30FA6C4686E85257F0E0008E964"}]]></xp:this.categoryFilter>
</xp:dominoView>
</xp:this.data>
<xp:viewColumn columnName="wi_Date" id="viewColumn6" displayAs="link" showCheckbox="true">
<xp:this.converter>
<xp:convertDateTime type="date"></xp:convertDateTime>
</xp:this.converter>
<xp:viewColumnHeader value="Creation Date" id="viewColumnHeader6" style="font-weight:bold">
</xp:viewColumnHeader>
</xp:viewColumn>
<xp:viewColumn id="wi_Intervention1" columnName="wi_Intervention">
<xp:viewColumnHeader id="viewColumnHeader9" style="font-weight:bold" value="Intervention">
</xp:viewColumnHeader>
</xp:viewColumn>
<xp:viewColumn id="wi_Category1" columnName="wi_Category">
<xp:viewColumnHeader id="viewColumnHeader10" style="font-weight:bold" value="Category">
</xp:viewColumnHeader>
</xp:viewColumn>
<xp:viewColumn id="viewColumn1">
<xp:this.facets>
<xp:viewColumnHeader xp:key="header"
id="viewColumnHeader1">
</xp:viewColumnHeader>
</xp:this.facets>
<xp:this.value><![CDATA[#{javascript:var s:string = varWI.getColumnValue('wi_Category');
if(s.equals("CATEGORY_DISCOUNT")) {
return "99. Discount"
} else if(s.equals("CATEGORY_INCOMPATIBILITY")) {
return "88. Incompatibility"
} else {
return "--. " + s.toLowerCase();
}}]]></xp:this.value>
</xp:viewColumn>
</xp:viewPanel>
</xp:view>
这部分:
var s:string = varWI.getColumnValue('wi_Category');
if(s.equals("CATEGORY_DISCOUNT")) {
return "99. Discount"
} else if(s.equals("CATEGORY_INCOMPATIBILITY")) {
return "88. Incompatibility"
} else {
return "--. " + s.toLowerCase();
}
始终以小写形式返回值。列值是文本,表单中的字段也是。
示例:如果列值为“CATEGORY_DISCOUNT”,则该列显示的是“--.category_discount”。
它似乎知道列值,因为它以小写形式表示,但它不会认为它等于我在“if”语句中检查的值。
很困惑....
【问题讨论】:
-
由于您使用 Notes 视图作为视图面板的数据源,您是否考虑过使用 Notes 视图在后端进行所有数学运算?如果你这样做,它会很快,你所要做的就是刷新控件。使用公式语言将您的逻辑放入列公式中。
-
用
return "--. " + s;测试代码,看看s到底包含了什么。 -
另外,尝试 s.equalsIgnoreCase() 而不是 s.equals()
-
我同意 Per 关于忽略大小写的观点,但根据 Paul 的建议,我建议使用 s.toUpperCase() == "CATEGORY_DISCOUNT"; 进行 equals 测试;
标签: xpages xpages-ssjs