2014-01-31 3 views
1

У меня есть представление, определенное на xpage. У меня также есть несколько фильтров (основанных на столбцах), которые пользователь может выбрать и объединить для фильтрации результатов в представлении. Я создаю строку запроса на основе этого, которую я создаю в dominoView.search (выполняя полное обновление). То, что я хотел бы сделать, это получить результаты поиска, чтобы затем я мог обновить некоторые значения, отображаемые в другом месте на странице. Мне сложно определить, где я могу выполнить эту логику. Я пытаюсь использовать view.getAllEntries(), а затем итерацию по коллекции. Иногда кажется, что это работает, но в других случаях я, кажется, получаю нефильтрованное представление. Кто-то предположил, что я явно вызываю view.FTSearch внутри одного из событий (beforePageLoad?), И сразу после вызова getAllEntries, сохраняя результаты в viewScope, но я получаю сообщение об ошибке «Ошибка при просмотре заметок», когда я пытаюсь сделать это , Любые указатели? ТИА!Получение значений столбцов в отфильтрованном представлении xpages

EDIT: После изучения жизненного цикла xpages немного (что еще немного запутывает), я думаю, что смогу точно настроить свой вопрос. Это мой первый вопрос с использованием stackoverflow, поэтому я надеюсь, что это нормально делать и продуктивно ....

Как я описал, у меня есть dominoView, определенный на моей xpage. Повторение повторяется над строками представления, отображая определенные поля из документов. Если я определяю запрос в свойстве поиска, то повтор правильно отображает уменьшенный набор документов, а не полный набор. (Запрос вычисляется в свойстве поиска через SSJS из некоторых переменных, определенных в viewScope в eventHandler в combobox.) Однако, если я попытаюсь получить доступ к текущим записям в представлении внутри выделенного раздела повтора (с помощью SSJS) с помощью myView. getAllEntries (где myView - это то, что определено как «значение» повтора), я все еще получаю все документы, даже если запрос был выполнен. Похоже, что в этот момент переменная вида уже применяла свой поиск (поскольку повторение работает), так почему же разные результаты? Есть ли другой способ доступа к строкам представления? Чтобы усложнить это, это просто простой эксперимент, который может прояснить проблему; как я указывал ранее, я фактически не хочу получать доступ к данным представления в течение повтора, я хочу получить к нему доступ в разделах rendered или value некоторых комбобоксах, определенных перед повторением в файле xpage.

Я надеюсь, что имеет смысл теперь ....

EDIT # 2: Я забыл добавить, что если я вручную вызвать FTSearch (или FTSearchSorted) перед вызовом myView.getAllEntries, то я думаю, что я могу сделать это Работа. Просто не нужно делать это в дополнение к встроенному поиску.

+0

Моя первоначальная попытка заключалась в вызове view.getAllEntries() в javascript, прикрепленном к выпадающим спискам, которые представляют доступные фильтры пользователю. Я фактически перебираю документы и извлекаю значения полей, связанные с этим фильтром combobox, сортируя их и вычисляя количество каждого значения, которое помещается в parens. Это очень похоже на фасетный поиск, который вы бы видели в Амазонке.Если пользователь выбирает второй фильтр, я, кажется, получаю все нефильтрованное представление, поэтому мне кажется, что мне нужно понять, когда выполняется поиск вида, и вставьте туда мой код. –

ответ

0

Из чего я хочу, чтобы вы перебирали записи в представлении, которое до этого было отфильтровано, т. Е. Получившаяся коллекция записей меньше, чем сама точка обзора.

То, что я не получаю (пока), - это то, что вы хотите сделать с результатом, или то, что вы хотите получить от итерации по отфильтрованному виду (вы упоминаете, что некоторые подсчеты отображаются в другом месте).

Возможно, хороший способ - использовать метод .getAllEntriesByKey вида, который возвращает объект NotesViewEntryCollection, который затем может использоваться для вашей итерации.

Не забывайте перерабатывать полученные объекты NotesViewEntry; причина этого объясняется несколько раз здесь, в stackoverflow.

+0

Да, я хочу перебирать отфильтрованные записи. Причина в том, что у меня есть несколько потенциальных фильтров, определенных на левой стороне (в основном соответствующие столбцам в представлении), и пользователь может выбрать один или несколько из них, чтобы уничтожить результаты. Поскольку фильтры выбраны, я хочу обновить количество совпадений для других доступных фильтров. Надеюсь, это ясно. Столбцы могут не сортироваться. PS Новый для xpages, поэтому я не понимаю, на каком жизненном цикле страницы и когда содержимое отфильтрованного представления готово для запроса. Благодаря! –

+0

Итак, вы думаете о какой-то фильтрации? Это может стать довольно сложным с помощью стандартных методов фильтрации просмотров; view.getAllEntries(), view.getAllEntriesByKey() и т. д. фактически выполняют те же действия, что и их эквиваленты LotusScript. Поэтому, если вы знакомы с классической разработкой LS, вы должны знать, что вы можете достичь и как обрабатывать результаты. –

+0

Я на самом деле довольно неопытный классический разработчик заметок. Мой фон больше в java, perl, C++ и т. Д. Это много, чтобы забрать! В любом случае, спасибо; как я упоминал в другом комментарии, основная проблема может быть просто не зная, когда фильтр поиска применяется к представлению и когда безопасно получать записи в представлении. –

Смежные вопросы