我创建了一个XPage,并根据Notes视图添加了一个视图控件,其中一些列基于公式而不是字段(例如,@ If(nomprov =“”; cifprov; nomprov)) 。因此,XPage上的列名称是一个以美元符号开头的数字,例如$ 14。查看基于字段的列不显示此类行为(XPage上的列名称是字段的名称)。
这没有任何损害,但现在我试图在XPage视图上实现全文搜索,并且对$ *列的搜索不起作用。这是页面源上这些列之一的定义:
<xp:viewColumn id="viewColumn3" styleClass="columna"
columnName="$14">
<xp:viewColumnHeader value="Proveedor"
id="viewColumnHeader3" styleClass="cabecera" sortable="true">
</xp:viewColumnHeader>
</xp:viewColumn>
这是我在视图的属性data \ data \ search上的代码:
var qstring;
if (sessionScope.searchNumfac != null & sessionScope.searchNumfac != "") {
qstring = "(Field numfac = *" + sessionScope.searchNumfac + "*)"
+ " OR (Field nomsociedad = *" + sessionScope.searchNumfac + "*)"
+ " OR (Field $14 = *" + sessionScope.searchNumfac + "*)";
}
sessionScope.queryString = qstring;
return qstring
其中searchNumFac对应于搜索框中的值。对“numfac”和“nomsociedad”列的搜索效果很好,但它在$ 14列上失败了。我还尝试通过Notes视图(证明者)上的列标题和XPage视图(Proveedor)上的列标题更改代码上的$ 14,但它仍然无效。
你知道有什么方法可以解决这个问题吗?
非常感谢,
卡洛斯
答案 0 :(得分:1)
查看列不是全文索引的一部分。您必须使用字段名称进行全文搜索。
在您的示例中,这意味着您必须使用列公式$14
中的字段名而不是@If(nomprov="";cifprov;nomprov))
:
...
+ " OR (Field nomprov = *" + sessionScope.searchNumfac + "*)"
+ " OR (Field cifprov = *" + sessionScope.searchNumfac + "*)";