xpages搜索功能
毛宏达
2023-12-01
在客户端中搜索当前视图有好几种方式:全文检索、搜索视图和对排序列按首字词定位。在Web环境中,适用并且用户习惯的便是全文检索。那么如何在XPages中实现检索当前视图的功能呢?
在一个XPage中添加一个视图数据源,该数据源可以指定“Search in 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>
然后把视图的search属性修改如下:
<xp:this.search><![CDATA[#{javascript:viewScope.get("search");}]]></xp:this.search>
为了方便用户操作,上面在txtSearch的代码中添加了客户端和服务器端的两段事件脚本,客户端脚本捕捉用户输入完词语后的回车键,服务器端脚本执行和用户点击搜索按钮同样的动作。