【问题标题】:Xpages - Repeat control / view SSJSXpages - 重复控制/查看 SSJS
【发布时间】:2018-05-02 16:01:05
【问题描述】:

我在 live 和 DEV 上有完全相同的数据库设计,但是,当我在页面上有一个重复控件时,它在 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>        

【问题讨论】:

    标签: xpages xpages-extlib


    【解决方案1】:

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

    最佳实践也是确保@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。

    【讨论】:

    • 抱歉耽搁了,我已经不在办公室了...没有其他视图名称或别名与所述视图名称存在...。我也按照建议更改为@DbName()没有任何变化,并且已经从 DEV 中删除并重新复制了视图,它可以工作。查看注释客户端中的视图也会按预期显示值
    【解决方案2】:

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

    【讨论】:

    • 抱歉耽搁了,我已经不在办公室了。程序名称相同,这是我检查的第一件事。重新输入名称也不能解决问题。我应该注意,这个视图中实际上只有 1 列....
    • 程序化名称为所有视图共享,它可能与其他视图中的列公式冲突。
    • 我刚刚给专栏起了一个完全独特的程序化名称,但仍然没有任何乐趣。列公式实际上也只是字段名称。
    • 如果我将视图公式更改为使用不同的字段,例如办公室位置,一切正常,但是当我将其更改回状态时,它不会再次出现。列/字段内容是字符串两种情况...
    • 在字段中仔细检查 isSummary 标志 - 在文档和字段表中。
    猜你喜欢
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多