Hello Domino程序员!
我使用Xpages应用程序,遇到了以下问题:
我有许多Xpages视图控件正在按用户名进行过滤。 最近我不得不在现有视图中添加完整搜索。选项“在视图结果中搜索”似乎覆盖“按列过滤”选项,因此我可以清楚地看到其他用户文档。
我可以考虑为查询添加额外的条件以过滤搜索结果,但这是唯一的方法吗?
任何帮助将不胜感激。
答案 0 :(得分:1)
好的,这是我如何解决这个问题。我只使用普通的旧视图数据源使用数据视图。
我想要一个搜索框,如果您只是在字段中键入内容,则使用" startKeys"属性导航到正确的条目。搜索字段有一个onFocus事件,它设置一个布尔值" viewMoveTo"为真。您可以将此值存储在bean或sessionScope中,也可以存储在任何地方,并不重要。还有另一个事件onKeyUp,它只是部分刷新数据视图。
如果您点击搜索按钮,它将使用"搜索"进行FT搜索。数据视图中的属性。在搜索按钮的onClick事件中,我设置了" viewMoveTo"价值为假。
这是我在该领域的代码:
<xp:inputText
id="viewSearchField1"
value="#{UserProfile.viewSearchStr}"
styleClass="form-control rpdViewSearchField">
<xp:this.attrs>
<xp:attr name="placeHolder" value="Search"></xp:attr>
</xp:this.attrs>
<xp:eventHandler
event="onfocus"
submit="true"
refreshMode="norefresh"
action="#{javascript:UserProfile.setViewMoveTo(true);}">
</xp:eventHandler>
<xp:eventHandler
event="onkeyup"
submit="true"
refreshMode="partial"
refreshId="dataView1">
</xp:eventHandler>
</xp:inputText>
这是搜索按钮的代码:
<xp:link id="link2" title="Perform Search">
<xp:eventHandler
event="onclick"
submit="true"
refreshMode="partial"
refreshId="dataView1"
action="#{javascript:UserProfile.setViewMoveTo(false);}">
</xp:eventHandler>
<i class="fa fa-search" />
</xp:link>
最后,这里是数据视图的数据源代码:
<xe:this.data>
<xp:dominoView
var="currentView"
expandLevel="1"
viewName="#{javascript:return PortalContext.getCollection() != null ? PortalContext.getCollection().getViewName() : null;}"
databaseName="#{javascript:return DesktopContext.getCurrentContainer().getFilePath();}">
<xp:this.startKeys><![CDATA[#{javascript:var returnVal = UserProfile.getViewSearchStr();
if (!UserProfile.getViewFTSearch()) {
returnVal = null;
}
return returnVal;}]]></xp:this.startKeys>
<xp:this.search><![CDATA[#{javascript:var returnVal = UserProfile.getViewSearchStr();
if (UserProfile.getViewFTSearch()) {
returnVal = null;
}
return returnVal;}]]></xp:this.search>
</xp:dominoView>
</xe:this.data>
所以,重复一遍......用户将光标放在搜索栏中,并且&#34; viewMoveTo&#34;变量通过onFocus事件设置为true。 &#34; startKeys&#34;数据源的属性检查是否&#34; viewMoveTo&#34;如果不是,则返回搜索字段的值作为要移动的键。如果viewMoveTo值为false,则返回null值。在onKeyUp事件中,我们部分刷新数据视图。
搜索按钮正好相反。它设置&#34; viewMoveTo&#34;的值。为假。 &#34;搜索&#34;数据源的属性检查是否&#34; viewMoveTo&#34;是的,如果不是,那么它会将搜索字段的值作为要搜索的值返回。如果viewMoveTo值为true,则返回null值。最后,onclick事件会对数据视图进行部分刷新。