none
Пагинация данных из списка с помощью CAML RRS feed

  • Вопрос

  • Доброго времени суток, коллеги!

    Столкнулся с такой проблемой: имеется ресурс, построенный на базе Sharepoint'a. Из средств редактирования только Microsoft Designer 2013, никакого VS. И есть на данном ресурсе список с новостями, которые нужны выводить постранично. До поры, до времени стандартная пагинация справлялась, но затем в новостях введи дату публикации по которой нужно было сортировать элементы списка, и начался форменный массаракш: пагинация целиком строится на ID элементов, либо каких-то других уникальных ключах. Запрос вида 

    <OrderBy Override='TRUE'><FieldRef Name='news_date_publication' Ascending='FALSE' /></OrderBy>

    с ключами пагинации pagingInfo = "Paged=TRUE&PagedPrev=TRUE&p_ID=ид_элемента" в первую очередь строит страницу, а ЗАТЕМ только сортирует по полю "news_date_publication". Стоит ли и говорить что получившийся SPListItemCollection не соответствовал тому, что мне нужно?

    Вопрос в том, как решить поставленную задачу нормального постраничного вывода? Сейчас в запасе имеется решение создать дополнительный столбец с какими-то уникальными параметрами только для сортировки и раз в час бизнес-процессом пробегать по списку, формируя значения данного столбца. Второй вариант: забить на родную пагинацию, выгружать все элементы списка, и своим алгоритмом выводить нужны элементы.

    30 августа 2017 г. 11:13

Ответы

  • Добрый день!

    Если нет возможности на VisualStudio делать собственную пагинацию, то я наверное сделал бы так (правда, если новостей больше 100, то наверное муторно без VS):

    1. Создал бы такой же, новый список новостей;

    2. В дизайнере сделал бы рабочий процесс, при обновлении элемента создавать такой же в новом списке (либо в VS сделать перенос элементов в новый список в нужном порядке);

    3. Открыл старый список в режиме быстрого редактирования так, чтобы обновлять элементы в порядке возрастания даты публикации и стал бы обновлять;

    4. Элементы перенесутся в новый список с нужным порядком ID;

    5. Удаляем старый список, переименовываем новый. Пагинация работает.

    Но если вы вносите новости не по порядку, то я написал полная чушь :)

    Наверное лучше всего сделать свой Web part и регулировать. Или поискать в магазине готовый Web part.

    Странно, но у меня есть куча списков, которые я сортирую как хочу, но пагинация работает как нужно. Может вам реализовать новости через кастомный список, а вывод шаблонами сделать. Получится свой список новостей с рабочей пагинацией. Или прикрутите Yammer вместо новостей.

    4 сентября 2017 г. 10:31