我可以过滤 Xpages 搜索栏吗
Can I filter an Xpages search bar
我得到了一个我没有开发的 XPages 项目。该项目有一个包含搜索栏 "facet" 的 OneUILayout。是否可以将过滤器编码到搜索栏方面,以便省略具有特定值字段的检索记录。我对 XPages 的经验很少。搜索结果输出到 OneUI_searchpage.xsp,其中编辑框显示搜索字符串,然后动态视图面板显示检索到的记录。我在下面附上了这两项的源代码。谢谢
<xp:label value="Search String:" id="label1"></xp:label>
<xp:inputText id="inputText1" value="#{param.search}"></xp:inputText>
<xp:panel id="maincontentpanel">
<xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"
width="100%">
<xe:this.data>
<xp:dominoView viewName="ContractsFlatByYear"
var="view">
<xp:this.search><![CDATA[#{javascript:return
param.search;}]]></xp:this.search>
</xp:dominoView>
</xe:this.data>
</xe:dynamicViewPanel>
在咨询了下面的 stwissel 之后,我修改了应用程序以在搜索结果 xpage 上有一个默认选中的复选框,并为相同的输出创建了一个额外的视图。一种显示已取消合同的视图,一种是省略已取消合同的视图。相关的 Xpage 部分现在如下所示;
<xp:checkBox text="Omit Cancelled Contracts"
id="OmitCancelled" defaultChecked="true" checkedValue="True"
uncheckedValue="False" style="padding-left:5.0em" value="#
{viewScope.viewSel}">
<xp:eventHandler event="onchange" submit="true" refreshMode="partial"
refreshId="dynamicViewPanel1"></xp:eventHandler>
</xp:checkBox>
<xp:panel id="maincontentpanel">
<xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"
width="100%" partialRefresh="true">
<xe:this.data>
<xp:dominoView var="view">
<xp:this.viewName>
<![CDATA[#{javascript:var cancelledYesNo = viewScope.viewSel
= getComponent("OmitCancelled").getValue();
if(cancelledYesNo == "True"){
viewName = "ContractsFlatByYear"}
else {
viewName = "ContractsFlatByYearandCancelled"}}]]>
</xp:this.viewName>
<xp:this.search><![CDATA[#{javascript:return param.search;}]]
></xp:this.search>
</xp:dominoView>
</xe:this.data>
</xe:dynamicViewPanel>
这似乎有效,但我有复选框 onChange 事件以在 dynamicviewpanel 上应用部分刷新,但仅在我单击 dynamicviewpanel 本身时刷新
搜索栏facet只抓取你要搜索的内容,并发送到指定的XPages进行处理。
您有 2 个选择:
- 更改构面以将附加条件发送到搜索页面
- 更改搜索页面(查询发布到的页面)中的搜索功能以过滤(如果它是静态的)。
请注意:代码中的过滤不是安全功能(如果您有意这样做的话)。有 reader 和作者字段。
XPages 的核心是 JSF,具有一些围绕 Domino 的特性。你可能想看看我的 article series。
更新
根据代码片段,您可以很快得到想要的结果。编辑视图选择公式并添加 & conContractStatus <> "cancelled"
。您需要首先检查该视图是否也用于其他地方以显示已取消的合同。如果是这种情况,请复制视图(例如在名称后面添加 Active)并在那里进行更改。
更新 2
您的代码没有 return 值,您不需要访问组件
<xp:this.viewName>
<![CDATA[#{javascript:return (viewScope.viewSel=="True") ? "ContractsFlatByYear" : "ContractsFlatByYearandCancelled";}]]>
</xp:this.viewName>
告诉我们进展如何
我得到了一个我没有开发的 XPages 项目。该项目有一个包含搜索栏 "facet" 的 OneUILayout。是否可以将过滤器编码到搜索栏方面,以便省略具有特定值字段的检索记录。我对 XPages 的经验很少。搜索结果输出到 OneUI_searchpage.xsp,其中编辑框显示搜索字符串,然后动态视图面板显示检索到的记录。我在下面附上了这两项的源代码。谢谢
<xp:label value="Search String:" id="label1"></xp:label>
<xp:inputText id="inputText1" value="#{param.search}"></xp:inputText>
<xp:panel id="maincontentpanel">
<xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"
width="100%">
<xe:this.data>
<xp:dominoView viewName="ContractsFlatByYear"
var="view">
<xp:this.search><![CDATA[#{javascript:return
param.search;}]]></xp:this.search>
</xp:dominoView>
</xe:this.data>
</xe:dynamicViewPanel>
在咨询了下面的 stwissel 之后,我修改了应用程序以在搜索结果 xpage 上有一个默认选中的复选框,并为相同的输出创建了一个额外的视图。一种显示已取消合同的视图,一种是省略已取消合同的视图。相关的 Xpage 部分现在如下所示;
<xp:checkBox text="Omit Cancelled Contracts"
id="OmitCancelled" defaultChecked="true" checkedValue="True"
uncheckedValue="False" style="padding-left:5.0em" value="#
{viewScope.viewSel}">
<xp:eventHandler event="onchange" submit="true" refreshMode="partial"
refreshId="dynamicViewPanel1"></xp:eventHandler>
</xp:checkBox>
<xp:panel id="maincontentpanel">
<xe:dynamicViewPanel rows="30" id="dynamicViewPanel1"
width="100%" partialRefresh="true">
<xe:this.data>
<xp:dominoView var="view">
<xp:this.viewName>
<![CDATA[#{javascript:var cancelledYesNo = viewScope.viewSel
= getComponent("OmitCancelled").getValue();
if(cancelledYesNo == "True"){
viewName = "ContractsFlatByYear"}
else {
viewName = "ContractsFlatByYearandCancelled"}}]]>
</xp:this.viewName>
<xp:this.search><![CDATA[#{javascript:return param.search;}]]
></xp:this.search>
</xp:dominoView>
</xe:this.data>
</xe:dynamicViewPanel>
这似乎有效,但我有复选框 onChange 事件以在 dynamicviewpanel 上应用部分刷新,但仅在我单击 dynamicviewpanel 本身时刷新
搜索栏facet只抓取你要搜索的内容,并发送到指定的XPages进行处理。
您有 2 个选择:
- 更改构面以将附加条件发送到搜索页面
- 更改搜索页面(查询发布到的页面)中的搜索功能以过滤(如果它是静态的)。
请注意:代码中的过滤不是安全功能(如果您有意这样做的话)。有 reader 和作者字段。
XPages 的核心是 JSF,具有一些围绕 Domino 的特性。你可能想看看我的 article series。
更新
根据代码片段,您可以很快得到想要的结果。编辑视图选择公式并添加 & conContractStatus <> "cancelled"
。您需要首先检查该视图是否也用于其他地方以显示已取消的合同。如果是这种情况,请复制视图(例如在名称后面添加 Active)并在那里进行更改。
更新 2
您的代码没有 return 值,您不需要访问组件
<xp:this.viewName>
<![CDATA[#{javascript:return (viewScope.viewSel=="True") ? "ContractsFlatByYear" : "ContractsFlatByYearandCancelled";}]]>
</xp:this.viewName>
告诉我们进展如何