XPages 查看数据源并限制为单一类别

XPages view data source and limit to single category

我有一个分类视图用作 XPage 中的视图数据源。我已经设置了数据源的 categoryFilter,以便仅显示 selected 个人(对于给定事件)的通话记录。存储在 sessionScope 中的过滤器是人员的 UniqueID 和 IncidentID 的串联。查找视图按该值分类。

人们希望这会起作用,但过滤似乎不起作用,而且我可以看到所有通话记录,无论我选择的人是谁。我以前做过这个,我一定遗漏了一些明显的东西。

我已经确认 sessionScope.callHistoryID 正在更新,因为我 select 是一个新人。我的通话记录数据库目前只有一位客人的 2 个历史文档,但它们会在 Xpage 中为每位客人显示。

来自调试器的

sessionScope.callHistoryID显然不一样(见下文):

<xp:panel id="pnlCallHistoryModal" style="padding-bottom:20px">
<xp:this.data>
    <xp:dominoView var="callhistoryView"
        viewName="luCallHistorybyPaxandIncidentID"
        databaseName="blah.nsf"
        ignoreRequestParams="true"
        categoryFilter="#{javascript:sessionScope.callHistoryID}">
    </xp:dominoView>
</xp:this.data>
<div class="col-xs-12 col-md-12 col-lg-12 panel-body">
            <xp:repeat id="repeat1" value="#{callhistoryView}"
                var="viewRow" indexVar="rowIndex" rows="500"
                repeatControls="false">
                <xp:this.facets>
                    <xp:text disableTheme="true" xp:key="header"
                        escape="false">
                        <xp:this.value><![CDATA[
                                <table class="table table-hover">
                                <tbody>]]></xp:this.value>
                    </xp:text>
                    <xp:text disableTheme="true" xp:key="footer"
                        escape="false">
                        <xp:this.value><![CDATA[
                                </tbody>
                                </table>]]></xp:this.value>
                    </xp:text>
                </xp:this.facets>
                <xp:tr>
                    <xp:this.rendered><![CDATA[#    {javascript:if(viewRow.isCategory()){
return false
}else{
return true
}}]]></xp:this.rendered>
                    <xp:td styleClass="col-md-10 col-lg-10 small">
                        <xp:text escape="true" id="name">
                            <xp:this.value><![CDATA[#{javascript:@ProperCase(viewRow.getColumnValue("CallerFullName"))}]]></xp:this.value>
                    </xp:text>
                        <br></br>
                        <xp:text escape="true" id="computedField1"
                            styleClass="small secondary-text">
                            <xp:this.value><![CDATA[#{javascript:if(viewRow.getColumnValue("CallerMemo").length > 128){
return viewRow.getColumnValue("CallerMemo").substring(0,128) + " ..."
}else{
return viewRow.getColumnValue("CallerMemo")
}}]]></xp:this.value>
                        </xp:text>
                    </xp:td>
                    <xp:td styleClass="col-md-2 col-lg-2 small">
                    <xp:text escape="true" id="creationdatetime"
                            styleClass="small">
                            <xp:this.value><![CDATA[#{javascript:viewRow.getColumnValue("CallDateTime")}]]></xp:this.value>
                            <xp:this.converter>
                                <xp:convertDateTime type="both"
                                    dateStyle="short" timeStyle="short">
                                </xp:convertDateTime>
                            </xp:this.converter>
                    </xp:text>                          
                    </xp:td>    
                </xp:tr>
            </xp:repeat>
        </div>
</xp:panel>

我怀疑这相当于 ViewNavigator.createViewNavFromCategory()。如果类别名称不存在,值得检查它是如何工作的。它可能会退回到部分匹配。

对于 "restrict to category",您最好使用 keys 属性 并将 keysExactMatch 设置为 true。