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。
我有一个分类视图用作 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。