2014-01-06 25 views
1
var component = getComponent("dvwContent"); 
return component.getRowCount() + " documents have been found"; 

如果我將此代碼放入過濾動態視圖之外的計算值(由「dvwContent」引用),它應該返回數字找到的條目,指這個問題&回答:Count entries in XPages viewXPages getRowCount()根據顯示的條目給出錯誤的數字

如果命中數超過了頁面顯示限制,它給了我頁面上填充行的數量+2。所以如果我每頁顯示25行,它告訴我「已找到27個文檔」(如果我顯示50個文檔,它會告訴我52個) - 即使頁面數量更多。如果命中次數少於頁面顯示限制,它將正常工作。

有沒有人有解決方案來顯示/計數正確的點擊次數?

+0

記住:行數()=命中數! 。這是屏幕上顯示的行。數字越大表示命中行數多於 – stwissel

回答

1

正如Stefan在他的評論.getRowCount()中提到的那樣,指的是頁面上可見的行。從我得到的結果可以看出,您對條目感興趣,而不是組件所示的行。這在我腦海

一個辦法是通過有問題的Domino視圖來訪問viewEntryCollection對象,然後得到該條目數:

var vw=database.getView("dvwContent"); 
var filter=["someFilter"]; 
var vec=vw.getAllEntriesByKey(filter, true); 
return vec.getCount().toString() + " documents have been found"; 
+0

好主意Lothar,但getAllEntriesByKey方法會根據視圖的列嚴格檢查視圖的條目。 但是過濾器值不一定適用/匹配到(後端)視圖的第一個(甚至任何)列。例如,我可以根據視圖沒有列的創建者名稱進行過濾。 – DonMaro

+0

我假設FT搜索會給出與過濾器應用到視圖相同的結果,但是這需要我在我試圖保留的同一頁上執行兩次搜索(關於服務器負載和流量);所以我想我可以從篩選結果中獲取信息,命中。 – DonMaro

+0

好吧,我再次檢查數據庫,發現過濾將切換評估視圖到一個匹配的第一列 - 所以如果我過濾創建者,在後端使用的視圖的創作者的名稱爲第一列。 你的一段代碼絕對有效! – DonMaro

相關問題