我可以过滤Xpages搜索栏吗?

时间:2015-01-27 16:35:09

标签: xpages

我得到了一个我没有开发的XPages项目。该项目有一个OneUILayout,其中包含一个搜索栏“facet”。是否可以将过滤器编码到搜索栏构面中,以便省略具有特定值字段的检索记录。我对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>

这似乎有效,但是我在复选事件上设置了复选框以在动态视图面板上应用部分刷新,但只有在我点击动态视图面板本身时才会刷新

1 个答案:

答案 0 :(得分:0)

搜索栏构面仅捕获您要搜索的内容并将其发送到指定的XPage进行处理。

您有两个选择:

  • 更改构面以将附加条件发送到搜索页面
  • 更改搜索页面中的搜索功能(查询发布到的页面)以过滤该搜索功能(如果它是静态的)。

请注意:代码中的过滤一个安全功能(如果您打算这样做)。有读者和作者的领域。

XPage的核心是JSF,其中包括Domino的一些专业。您可能想查看我的article series

<强>更新

根据代码段,您可以非常快速地获得所需的结果。编辑视图选择公式并添加 & conContractStatus <> "cancelled"。您需要首先检查该视图是否在其他地方用于显示已取消的合同。如果是这种情况,请复制视图(例如,在名称后面添加Active)并在那里进行更改。

更新2

您的代码不会返回值,也不需要访问组件

 <xp:this.viewName>
       <![CDATA[#{javascript:return (viewScope.viewSel=="True") ? "ContractsFlatByYear" : "ContractsFlatByYearandCancelled";}]]>
    </xp:this.viewName>

让我们知道它是怎么回事