XPages - как показать все записи в xp: повторить контроль всего один раз? - PullRequest
0 голосов
/ 04 марта 2019

В моем XPage определен источник данных, который представляет собой отфильтрованное представление:

<xp:this.data>
        <xp:dominoView var="viewItems" viewName="myTodoList">
            <xp:this.categoryFilter><![CDATA[#{javascript:return sessionScope.get("userFilter");}]]></xp:this.categoryFilter>
        </xp:dominoView>
    </xp:this.data>

Я хочу отобразить данные с помощью повторного управления.Но я хочу отобразить ВСЕ записи в наборе данных.Сколько я вычисляю свойство xp: this.rows?

<xp:repeat id="repeat1" value="#{viewItems}"
    var="obj" indexVar="idx">
    <xp:this.rows><![CDATA[#{javascript:getComponent("repeat1").getDataModel().getRowCount()}]]></xp:this.rows>

</xp:repeat>

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

Вам нужно получить количество элементов из вашего DominoView, а не rowCount из модели данных компонента.

Вы можете быть осторожны с тем, что вы хотите здесь сделать, представление может быть ОЧЕНЬ большим, а взаимодействие с пользователем - плохим.

В библиотеке расширений есть «infiniScroll», которая может более соответствовать ожиданиям пользователя.

0 голосов
/ 05 марта 2019

Свойство rows на самом деле просто устанавливает "отсечение" при запуске подкачки.Вместо того, чтобы (в значительной степени) вычислять текущий размер представления, просто установите для него «достаточно большое» значение.Магическая константа «9999» сработала для меня, но MAX_INT - это предел, я думаю.

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

Кроме того, существует внутреннее ограничение ~ 10 тыс. ссылок API C-класса для классов Java Notes * - при ударе сервер / клиент АВАРИИ.Вы должны быть в безопасности с чистыми компонентами XSP.Как только вы добавите в свои страницы дополнительный код, который использует классы Notes * (и не перерабатывает), особенно внутри циклов / повторов, ваш лимит составит лишь часть этого значения.

0 голосов
/ 04 марта 2019

Вы пробовали?

<xp:this.rows><![CDATA[#{javascript:var vw:NotesView = database.getView("myTodoList");
return vw.getAllEntriesByKey(sessionScope.get("userFilter"),true).getCount().toFixed();}]]></xp:this.rows>
...