javascript - 从 Xpages 中的 "view"开始计算父文档

标签 javascript xpages domino-designer-eclipse

我有一个名为“查看所有主题”的表行,其中有一个计算字段,该字段指示名为“主题”的 View 中的文档总数。

此 View 是分类 View ,没有单独的回复表单。

所以现在我希望从此 View 中获取文档的总数,但是,我只想返回父文档计数,而不是返回带有响应文档(子文档)的所有条目。

View 中的文档总数为 6,其中 2 个是响应。因此,除了响应之外,我想检索父文档计数为 4。

我用这个javascript找到了解决方案。但需要知道是否有更简单的解决方案。 任何建议将不胜感激。

 <xp:text escape="true" id="computedField1">
    <xp:this.value><![CDATA[#{javascript:var currentDb:NotesDatabase = session.getCurrentDatabase();
    var currentView:NotesView = currentDb.getView("topic");
    var docColl:NotesViewEntryCollection = currentView.getAllEntries();
    var c = docColl.getCount();
    var r =0;
    for(i=1;i<=c;i++){
    var en:NotesViewEntry = docColl.getNthEntry(i);
    var docs:NotesDocument = en.getDocument();
    if(!docs.isResponse())
    r++;
    }
    return r;}]]>
    </xp:this.value>
            <xp:this.converter>
                <xp:convertNumber type="number"></xp:convertNumber>
            </xp:this.converter>
         </xp:text>

最佳答案

嗯,可能有几种方法可以解决这个问题。尊敬的,您的代码不是其中之一。你应该不惜一切代价避免“getNthEntry()”,因为它的表现很糟糕。如果您确实想坚持使用您的解决方案,您应该摆脱 for 循环并使用可以执行 getNextEntry(entry) 或 getNextDocument(doc) 的方法。

最简单的方法可能只是更新 View (如果可以的话)。父文档的形式可能与响应不同。因此,您可以添加一列以达到 @if(@contains("form", "myParentForm");1;0)... 类似的效果。因此,如果它是父级,则返回 1,否则返回 0。然后设置该列以获取总计,然后使用 NotesViewNavigator 类拉回该数字。

如果您不想添加列。那么,最好的解决方案可能是使用 NotesViewNavigator。这应该非常快。您想要导航到第一个条目 - 这可能是父条目。然后,您可以循环执行 getnextSibling 来处理任何响应文档。应该有很多例子,但这里有一个: http://www-12.lotus.com/ldd/doc/lotusscript/lotusscript.nsf/1efb1287fc7c27388525642e0074f2b6/11c5837eb09e23a78525675300720a16?OpenDocument

我想您当然可以创建一个新的隐藏 View ,该 View 具有相同的选择公式,减去获取响应的部分。如果您有一个仅包含父级的 View ,那么您可以将所有文档或条目放入一个集合中,然后只需执行 collection.getCount()...类似的操作。

祝你好运!

关于javascript - 从 Xpages 中的 "view"开始计算父文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917984/

相关文章:

PHP 无法读取 AJAX 发送的数组

java - 使用java从domino获取rtf字段以获取JSON

java - 为 lwpd.xsp.core 源运行调试 session

javascript - 为什么绝对定位的指示符会从相对定位的容器中消失?

javascript - 从页面上的图像中检索二进制数据/EXIF

xpages - 加载 javascript 库但没有返回对象

javascript - 计算名称选择器控件的csjs id

Notes Client 和 Domino Designer 9.0.1 FP2 IF1 中未安装 Dojo 1.9.4?

port - 无法使用 Notes 9 在我的本地计算机上启动 nhttp.exe 进程

JavaScript:以 mm/dd/yyyy 格式拆分和连接日期