我在live和DEV上有完全相同的数据库设计,但是,当我对页面进行重复控制时,它在DEV上按预期工作,从视图中提取文档的状态,但不在实时,它只列出视图中文档的编号。它似乎也没有返回任何唯一值。我使用dbcolumn获取值,并尝试在其周围包装@unique,然后使用脚本lib来处理唯一条目,但没有这样的运气。附图和下面的代码。有什么想法吗?
<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>
答案 0 :(得分:0)
在实时数据库中检查具有相同名称/别名的多个视图。您的实时版本可能会寻找与您期望的视图不同的视图。
最佳做法还是确保@DbColumn
调用通过@DbName()
作为第一个参数。它仍然需要完成相同数量的工作,但它将确保一致的结果(“”对XPiNC不起作用)。根据Howard Greenberg的分析,使用SSJS / Java获取视图并返回getColumnValues()
也可能比@DbColumn()
表现得更好。作为额外的奖励,可能值得查看此XSnippet,以便为包含重复https://openntf.org/XSnippets.nsf/snippet.xsp?id=repeat-with-header-and-footer-facets的HTML使用重复控制方面。它确保表格的HTML不会注入额外的HTML。
答案 1 :(得分:0)
您的实时视图似乎已损坏。使用Notes客户端打开它以验证它是否包含预期值。 一种可能是腐败的程序化名称&#34;列属性中的值。有时,特别是通过在视图设计中复制/粘贴,对于具有不同公式的列,您的列将获得相同的美元值(例如,$ 1)。这导致&#34;奇怪&#34;其中一列中的值与其公式完全不同。删除程序化值,将自动生成新的值。