XPages全文搜索和$ *列

时间:2013-07-31 12:02:37

标签: xpages

我创建了一个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,但它仍然无效。

你知道有什么方法可以解决这个问题吗?

非常感谢,

卡洛斯

1 个答案:

答案 0 :(得分:1)

查看列不是全文索引的一部分。您必须使用字段名称进行全文搜索。

在您的示例中,这意味着您必须使用列公式$14中的字段名而不是@If(nomprov="";cifprov;nomprov))

...
+ " OR (Field nomprov = *" + sessionScope.searchNumfac + "*)"
+ " OR (Field cifprov = *" + sessionScope.searchNumfac + "*)";