12. 如何在XPages中实现搜索视图

在客户端中搜索当前视图有好几种方式:全文检索、搜索视图和对排序列按首字词定位。在Web环境中,适用并且用户习惯的便是全文检索。那么如何在XPages中实现检索当前视图的功能呢?

首先,开启数据库的全文索引。然后在一个XPage中添加一个视图数据源,该数据源可以指定“Searchin view results”属性,即XML文档中的search属性。设定一个固定的要搜索的词当然没什么用处。我们便在视图控件上方先增加一个用于输入要搜索的词语的文本框txtSearch,再添加一个按钮btnSearch。接下来就要遇到在如何在分类视图中一次显示一个分类一文中同样的问题,也可以使用同样的技巧。下面是文本框和按钮的代码片段:

<xp:inputText id="txtSearch">
<xp:eventHandler event="onkeypress" submit="true" refreshMode="complete">
		<xp:this.script><![CDATA[if (thisEvent.keyCode==13) {
      return true;
}else{
      return false;
}]]></xp:this.script>
		<xp:this.action><![CDATA[#{javascript:var filter=getComponent("txtSearch").getValue();
viewScope.put("search", filter);}]]></xp:this.action>
	</xp:eventHandler></xp:inputText>
<xp:button id="btnSearch" value="Search">
	<xp:eventHandler event="onclick" submit="true" refreshMode="complete">
		<xp:this.action><![CDATA[#{javascript:var filter=getComponent("txtSearch").getValue();
viewScope.put("search", filter);}]]></xp:this.action>
	</xp:eventHandler>
</xp:button>

然后把作为数据源的Domino View(xp:dominoView)的search属性修改如下:

<xp:this.search><![CDATA[#{javascript:viewScope.get("search");}]]></xp:this.search>

对视图进行搜索的功能便完成了。为了方便用户操作,上面在txtSearch的代码中添加了客户端和服务器端的两段事件脚本,客户端脚本捕捉用户输入完词语后的回车键,服务器端脚本执行和用户点击搜索按钮同样的动作。

你可能感兴趣的:(搜索,视图,Xpages)