2014-01-31 57 views
1

我在xpage上定義了一個視圖。我也有幾個過濾器(基於列),用戶可以選擇和組合以過濾視圖中的結果。我生成一個查詢字符串基於這個,我在dominoView.search(做一個完整的刷新)構造。我想要做的是獲得搜索結果,以便我可以更新頁面上其他位置顯示的某些計數。不過,我很難弄清楚我可以在哪裏執行這個邏輯。我試圖使用view.getAllEntries(),然後遍歷集合。有時它看起來像是有效的,但有時候我似乎正在得到未經過濾的觀點。有人建議我在其中一個事件(beforePageLoad?)內部顯式調用view.FTSearch,並在調用getAllEntries之後立即調用view.cope,但將結果保存在viewScope中,但當我試圖做到這一點時,出現「Error while browses Notes view」運行時錯誤。任何指針? TIA!在已過濾的xpages視圖中檢索列值

編輯:在學習了xpages生命週期後(這仍然有點令人困惑),我想我可以微調我的問題。這是我的第一個stackoverflow問題,所以我希望這是可以做和生產....

正如我所描述的,我有一個dominoView定義在我的xpage。重複遍歷視圖的行,顯示文檔中的某些字段。如果我在搜索屬性中定義了一個查詢,則重複正確顯示縮小的文檔集合而不是完整的集合。 (查詢是通過SSJS在組合框的eventHandler中的viewScope中定義的某些變量在搜索屬性中計算的。)但是,如果我嘗試使用myView訪問重複呈現部分內部(使用SSJS)視圖中的當前條目。 getAllEntries(其中myView被定義爲重複的「值」),即使查詢已完成,我仍然可以獲取所有文檔。似乎在這一點上,視圖變量已經應用了搜索(因爲重複的工作),爲什麼不同的結果呢?是否有另一種方式來訪問視圖的行?使這更加複雜化,這只是一個簡單的實驗,可以澄清問題。正如我之前指出的那樣,我實際上並不想訪問重複內的視圖數據,我想在xpage文件中的重複之前定義的某些組合框的渲染或值部分中訪問它。

我希望這是現在更有意義....

編輯#2:我忘了補充一點,如果我打電話myView.getAllEntries之前手動調用FTSearch(或FTSearchSorted),那麼我想我可以讓這個工作。除了視圖的內置搜索之外,似乎沒有必要這麼做。

+0

我最初的嘗試涉及調用javascript中的view.getAllEntries(),並附加到組合框,向用戶呈現可用過濾器。實際上,我正在對文檔進行迭代,並檢索與該組合框過濾器相關的字段值,對它們進行排序,然後計算每個存儲在parens中的值。例如,這很像您在亞馬遜看到的多面搜索。如果用戶選擇了第二個過濾器,我似乎得到了整個未過濾的視圖,所以感覺我需要了解何時執行視圖的搜索並在那裏插入我的代碼。 –

回答

0

從我得到的結果來看,您希望遍歷視圖中之前已被過濾的條目,即其結果條目集合小於視圖本身。

我還沒有得到的是你想要做什麼結果,或者你想要從你的過濾視圖的迭代中獲得什麼(你提到一些計數要顯示在別的地方)。

可能一個好方法是使用視圖的.getAllEntriesByKey方法,該方法返回一個NotesViewEntryCollection對象,然後該對象可用於您的迭代。

不要忘記回收生成的NotesViewEntry對象;這個原因在這裏已經多次解釋了。

+0

是的,我想迭代過濾條目。原因是我在左側定義了幾個可能的過濾器(基本上對應於視圖中的列),用戶可以選擇其中一個或多個過濾器來減少結果。如果選擇了過濾器,我想更新其他可用過濾器的匹配計數。我希望這是明確的。列可能未被排序。 PS新的xpages,所以我不清楚頁面生命週期和過濾視圖的內容準備好查詢。謝謝! –

+0

因此,您正在考慮進行某種深入過濾?標準視圖過濾方法可能會變得非常複雜; view.getAllEntries(),view.getAllEntriesByKey()等實際上與它們的LotusScript等價物相同。所以如果你熟悉經典的LS開發,那麼你應該知道你能做什麼以及如何處理結果。 –

+0

我其實也是一個經驗不足的經典Notes開發者。我的背景更多的是java,perl,C++等等。無論如何,謝謝你;正如我在另一條評論中提到的那樣,主要問題可能只是不知道何時將搜索過濾器應用於視圖以及何時可以安全地獲取視圖的條目。 –