Xpages-重复控制/查看SSJS

Xpages-重复控制/查看SSJS,xpages,xpages-extlib,Xpages,Xpages Extlib,我在live和DEV上有完全相同的数据库设计,但是,当我在页面上有一个repeat控件时,它会在DEV上按预期工作,从视图中提取文档的状态,而不是在live上,它只列出视图中文档的编号。它似乎也不会返回任何唯一的值。我使用dbcolumn来获取值,并尝试在其周围包装一个@unique,然后使用脚本库来处理唯一的条目,但没有这样的运气。图片附在下面和代码。有什么想法吗 <table class="table table-hover"> <thead> <t

我在live和DEV上有完全相同的数据库设计,但是,当我在页面上有一个repeat控件时,它会在DEV上按预期工作,从视图中提取文档的状态,而不是在live上,它只列出视图中文档的编号。它似乎也不会返回任何唯一的值。我使用dbcolumn来获取值,并尝试在其周围包装一个@unique,然后使用脚本库来处理唯一的条目,但没有这样的运气。图片附在下面和代码。有什么想法吗

<table class="table table-hover">
  <thead>
    <tr>
      <th>Status</th>
      <th>Total</th>
      <th>%</th>
    </tr>
  </thead>
            <tbody>

                <xp:repeat id="repeat1" rows="30" var="row">
                    <xp:this.value><![CDATA[#{javascript://var result = @DbColumn("", "vwStatusStats", 1);
//var result = session.evaluate("@DbColumn(\"\"; ; \"vwStatusStats\"; 1)").elementAt(0) 


//result = session.evaluate("@Unique");

//return result
//return @Unique(@DbColumn("", "vwStatusStats", 1))

return DbColumnArray("", "", "", "unique", "", "vwStatusStats", 1)
}]]></xp:this.value>

                    <tr>
                        <td>
                            <xp:text escape="true"
                                id="computedField11">
                                <xp:this.value><![CDATA[#{javascript:row}]]></xp:this.value>
                            </xp:text>
                        </td>
                        <td>
                            <xp:text escape="true"
                                id="computedField1">
                                <xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");
var vec:NotesViewEntryCollection = v.getAllEntriesByKey(row);
return vec.getCount().toString()}]]></xp:this.value>
                            </xp:text>
                        </td>

                        <td>
                            <xp:text escape="true"
                                id="computedField2">
                                <xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("computedField1").getValue();

var result = (amount / total) * 100;

return result}]]></xp:this.value>
                            </xp:text>
                        </td>
                    </tr>
                </xp:repeat>

                <tr>
                    <td>Total</td>                      
                    <td>
                        <xp:text escape="true" id="cmpTotal">
                            <xp:this.value><![CDATA[#{javascript:var v:NotesView = database.getView("vwStatusStats");

return v.getEntryCount().toString()}]]></xp:this.value>
                        </xp:text></td>
                        <td>
                            <xp:text escape="true"
                                id="computedField3">
                                <xp:this.value><![CDATA[#{javascript:var total = getComponent("cmpTotal").getValue();
var amount = getComponent("cmpTotal").getValue();

var result = (amount / total) * 100;

return result}]]></xp:this.value>
                            </xp:text></td>
                </tr>               

            </tbody>
                    </table>        

地位
全部的
%
全部的

在实时数据库中检查多个具有相同名称/别名的视图。您的实时版本可能会看到与您预期不同的视图


最佳实践也是确保调用将
@DbName()
作为第一个参数传递给
@DbColumn
。它仍然需要做同样数量的工作,但它将确保一致的结果(“对XPiNC不起作用”)。霍华德·格林伯格(Howard Greenberg)的分析表明,使用SSJS/Java获取视图并返回
getColumnValues()
可能会比
@DbColumn()
更好。作为额外的奖励,值得一看这个XSnippet,它为包装重复的HTML使用了重复控制方面。它确保表的HTML不会被注入额外的HTML。

您的live视图似乎已损坏。使用Notes客户端打开它以验证它是否包含预期值。
一种可能是列属性中的“编程名称”值损坏。有时,尤其是通过在视图设计中复制/粘贴,对于公式不同的列,您的列可以获得相同的美元值(例如1美元)。这会导致其中一列中出现“奇怪”的值,这与其公式完全不同。删除编程值,将自动生成新值。

抱歉,我不在办公室。编程名称相同,这是我检查的第一件事。重新输入名称也不能解决问题。我应该注意,这个视图中实际上只有一列……所有视图都共享程序名,它可能与其他视图中的列公式冲突。我只是给了这个列一个完全唯一的程序名,但仍然没有乐趣。列公式实际上也是字段名。如果我将视图公式更改为使用不同的字段,例如“office location”,则一切正常,但当我将其更改回状态时,它就不再正常了。。列/字段内容在这两种情况下都是字符串…请仔细检查字段中的isSummary标志-文档和字段表中都是。很抱歉延迟,我不在办公室。。。不存在具有所述视图名称的其他视图名称或别名。。。。我还按照建议更改为@DbName(),没有任何更改,并且从DEV删除并重新复制了视图,它在DEV中工作。在notes客户端中查看视图时,也会按预期显示值