2014-11-06 56 views
3

我試圖使用其search屬性來過濾viewPanel。 viewPanel沒有任何分類列。Xpages搜索顯示文檔和響應

這些文件使用的是讀者和作者的字段。一個問題是,我在代表「隱藏」文檔的視圖中獲得了一些空行。

過濾器輸入字段都包含在Doc中。類型,以及響應類型。

var tmpArray = new Array(""); 
var cTerms = 0; 
var dateFormatter = new java.text.SimpleDateFormat("MM-dd-yyyy"); 

if (sessionScope.compA) { 
tmpArray[cTerms++] = "(Field Comp = \"*" + sessionScope.compA + "*\")"; 
tmpArray[cTerms++] = "(Field Compania = \"*" + sessionScope.compA + "*\")"; 
/* Comp - the field from Doc. & Compania - the field from Response */ 
} 

if (sessionScope.numePro) { 
tmpArray[cTerms++] = "(Field NumeProiect = \"*" + sessionScope.numePro + "*\")"; 
tmpArray[cTerms++] = "(Field Proiect = \"*" + sessionScope.numePro + "*\")"; 
/* NumeProiect - the field from Doc. & Proiect - the field from Response */ 
} 
if (sessionScope.din && sessionScope.pana) { 
    tmpArray[cTerms++] = "Field _creationDate >= " + dateFormatter.format(sessionScope.din) + " AND Field _creationDate <= " + dateFormatter.format(sessionScope.pana); 
}  
qstring = tmpArray.join(" OR ").trim(); 
sessionScope.queryString = qstring; 
return qstring 

但我沒有得到預期的結果,我得到這樣的:對於sessionScope.compA正確的文件,但如果我添加未包含在任何連續第二sessionScope.numePro值由視圖列出的文件,結果是一樣的,應該沒有結果。

我該如何做到這一點?

+0

如果使用OR連接所有條件,那麼它只需要一個條件爲true即可顯示文檔。 – 2014-11-06 12:29:26

+0

@KnutHerrmann我首先用AND嘗試,但沒有顯示任何結果 – 2014-11-06 12:41:15

回答

1

我的猜測是,你只是混淆了ftsearch部分之間的邏輯連接。以下代碼應該適用於您:

var tmpArray = new Array(""); 
var cTerms = 0; 
var dateFormatter = new java.text.SimpleDateFormat("MM-dd-yyyy"); 

if (sessionScope.compA) { 
    tmpArray[cTerms++] = "((Field Comp = \"*" + sessionScope.compA + "*\") OR " + 
          "(Field Compania = \"*" + sessionScope.compA + "*\"))"; 
    /* Comp - the field from Doc. & Compania - the field from Response */ 
} 

if (sessionScope.numePro) { 
    tmpArray[cTerms++] = "((Field NumeProiect = \"*" + sessionScope.numePro + "*\") OR " + 
          "(Field Proiect = \"*" + sessionScope.numePro + "*\"))"; 
    /* NumeProiect - the field from Doc. & Proiect - the field from Response */ 
} 
if (sessionScope.din && sessionScope.pana) { 
    tmpArray[cTerms++] = "Field _creationDate >= " + dateFormatter.format(sessionScope.din) + 
    " AND Field _creationDate <= " + dateFormatter.format(sessionScope.pana); 
}  
qstring = tmpArray.join(" AND ").trim(); 
sessionScope.queryString = qstring; 
return qstring