xpages:无法使用getColumnValue()计算视图列

时间:2015-12-01 15:15:19

标签: xpages xpages-ssjs

在下面的代码中,我尝试使用来自视图中另一列的值来计算最后一列。

我无法弄清楚为什么这不起作用,一直返回默认值:

<?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();
}

始终以小写形式返回值。列值是文本,也是表单中的字段。

示例:如果列值为&#34; CATEGORY_DISCOUNT&#34;列显示的是&#34; - 。 category_discount&#34 ;.

它似乎知道列值,因为它将它放在小写字母中,但它不会看到它等于我在&#34中检查的值;如果&#34;言。

相当困惑....

2 个答案:

答案 0 :(得分:0)

试试s=="CATEGORY_DISCOUNT"。您将它转换为SSJS字符串,而不是java.lang.String。 .equals()可能不适用于SSJS字符串。

答案 1 :(得分:0)

同道编码员,问题与代码无关,但文档中保存了值。

原来用于输入值的下拉列表的公式如下:

FrenchValue + " | " + Alias

当然,在网络上,额外的空间实际上是用别名保存的。所以我在每个值的开头都有一个额外的空间......

我被这一两次抓住了,现在我的同事也学到了宝贵的一课!!!

标准代码在从填充视图列中字段的表单的下拉列表中使用的视图列中删除了额外空格后,就像魅力一样开始工作。

最终的列代码与此类似:

var s:string = viewEntry.getColumnValue('Intervention');
s = s.trim();
var col = sessionScope.lang=="en" ? 3 : 2;
@DbLookup(@DbName(), "VWL022", s, col);