Xpages DataView Control и пользовательская сортировка результатов поиска

Мне нужно создать пользовательскую сортировку для FTSearch (может быть из представления с результатами, хранящимися в viewEntryCollection или из базы данных в NotesDocumentCollection). Порядок связан с количеством условий поиска, найденных в теме и категории документа. Эта часть работает хорошо, но я не уверен, какой тип объекта должна возвращать эта функция, чтобы использовать результаты в элементе управления представлением данных. Это NotesDocumentCollection, массив JavaScript или любой другой объект? И как нажимать/получать доступ к значениям, которые я хочу, в разных столбцах?

Я видел много кода для сортировки результатов поиска, но все они сортируют определенный столбец...

Спасибо :D


person Ben Dubuc    schedule 16.01.2015    source источник
comment
Вы пробовали это? openntf.org/xsnippets.nsf/search.xsp?search=sort   -  person Thomas Adrian    schedule 16.01.2015
comment
Проблема в том, что для DataView требуется представление Notes. Я пытаюсь выяснить, возможно ли использование DataView для отображения результатов поиска с пользовательской сортировкой.   -  person Ben Dubuc    schedule 16.01.2015
comment
Итак, теперь у меня есть объект JS, который содержит несколько свойств, одно из которых представляет собой массив NotesDocuments, отсортированных так, как я хочу. Могу ли я использовать это как источник данных в представлении данных? И как мне получить доступ к полям документа из этого массива, если я тогда использую элемент управления повторением? Спасибо   -  person Ben Dubuc    schedule 16.01.2015
comment
И снова здравствуйте. Не уверен, что вы можете использовать что-либо, кроме представления в представлении данных. В повторе вы можете добавить источник данных документа на панель внутри повтора и получить доступ к значениям из источника данных. Или вы можете получить доступ к значениям из повторения напрямую, используя x.getDocument().getItemValueString(fld), где x — переменная повторения.   -  person Thomas Adrian    schedule 16.01.2015
comment
Томас, в итоге я сделал именно так: использовал таблицу данных вместо представления данных и получил свои значения с помощью методов документа Notes, так как это объект, который хранится в результирующем массиве. Это очень плохо, так как приложение часто использует DataView, поэтому отображение результатов в объекте того же типа было бы здорово для пользователей. Спасибо за помощь :D   -  person Ben Dubuc    schedule 16.01.2015


Ответы (1)


Я нашел способ сделать это, вот мой пост: http://www.bleedyellow.com/blogs/DominoHerald/entry/data_view_with_a_notesviewentrycollection?lang=en_us

Там же есть ссылка на пост Брэда Балассайтиса.

Позже я обнаружил (после того, как сделал вышеизложенное), что вы можете создать NotesViewEntryCollection и также вызвать для него FTSeach.

Привет, Брайан

Родиго предложил не ссылаться на ответы, поэтому вот текст моего сообщения, связанного выше:

Представление данных с помощью NotesViewEntryCollection Брайан А. Мур | 20 января | 4 комментария | 388 посещений Итак, я давно хотел использовать представление даты, но у меня не было времени, чтобы сесть и разобраться в этом. И (мыльница здесь) приведенные примеры довольно сложны. У меня есть образец, основанный на работе Брэда, который я опубликую. Но пока я соображаю это, вот лакомый кусочек. Когда вы используете представление данных, вам предоставляется только возможность выбрать представление Domino. Я хотел посмотреть, сможешь ли ты сделать это с коллекцией. Оказывается можно. Что я сделал, так это (в моем странном процессе обнаружения): я создал DataTable на основе NotesViewEntryCollection всех записей в представлении. Я скопировал из него узел и заменил узлы в dataView. И страница отображается. Я установил пейджер только для того, чтобы проверить, есть ли у него полная функциональность, и он работает, так что я подозреваю, что и другие вещи тоже будут работать. Вот и весь XPage. Это должно сработать для вас, просто изменив имя представления и полученное поле. Кроме того, это начало использования представления данных, если вы еще не начали :)

    <?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xe="http://www.ibm.com/xsp/coreex">

    <xe:dataView
        id="dataView1"
        var="rowData"><xp:this.facets>
    <xp:pager
        layout="Previous Group Next"
        partialRefresh="true"
        id="pager1"
        xp:key="pagerTopLeft">
    </xp:pager></xp:this.facets>
        <xp:this.value><![CDATA[#{javascript:var nView:NotesView=database.getView('Name');
var nVEC:NotesViewEntryCollection=nView.getAllEntries();
return nVEC;}]]></xp:this.value>
        <xe:this.summaryColumn>
            <xe:viewSummaryColumn value="#{javascript:rowData.getDocument().getItemValueString('Subject');}"></xe:viewSummaryColumn>
        </xe:this.summaryColumn>
    </xe:dataView></xp:view>

Привет, Брайан

person Brian M Moore    schedule 12.06.2015
comment
Избегайте ссылок на ответы, поскольку они могут не работать в будущем, вместо этого укажите наиболее важные аспекты в собственном ответе. - person Rodrigo López; 12.06.2015