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

时间:2016-05-09 15:54:09

标签: xpages datasource categories

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

人们会期望这样做,但过滤似乎不起作用,无论我选择哪个人,我都能看到所有的通话记录。我以前做过这个,但我必须错过一些明显的东西。

我已经验证了sessionScope.callHistoryID正在更新,因为我选择了一个新人。我的呼叫历史数据库目前只有一个访客的2个历史文档,但它们显示在Xpage中的每个访客。

enter image description here

来自调试器的

sessionScope.callHistoryID显然不相同(见下文):

enter image description here

<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>

1 个答案:

答案 0 :(得分:1)

我怀疑这将相当于ViewNavigator.createViewNavFromCategory()。如果类别名称不存在,那么值得检查一下它的作用。它可能会回归到部分匹配。

对于&#34;限制为类别&#34;,您最好使用keys属性和设置keysExactMatch为真。