У меня есть хорошие новости и плохие новости для вас.
Во-первых, хорошие новости. Вы можете сортировать по свойствам содержимого с помощью объекта Criteria до извлечения 20 элементов. Вы захотите использовать свойства OrderByField и OrderByDirection критериев.
criteria.OrderByField = ContentProperty.DateCreated;
criteria.OrderByDirection = EkEnumeration.OrderByDirection.Descending;
Плохие новости приходят при попытке упорядочить элементы на основе полей в смарт-форме. Вы можете сделать это с помощью IndexSearch API, но, поскольку Ektron 8.0* по-прежнему использует службу индексирования Microsoft, я не сторонник такого подхода и не могу поделиться кодом. Если вы решите пойти по этому пути, предпосылка состоит в том, чтобы использовать поиск для возврата идентификаторов контента в правильном порядке, а затем использовать критерии, как вы, чтобы получить элементы с этими идентификаторами.
Что вы можете сделать только с помощью API, так это использовать Microsoft LINQ для сортировки данных после их загрузки, но для того, чтобы получить правильные результаты в правильном порядке, вы должны сначала загрузить все элементы (и в идеале кэшировать их, чтобы свести к минимуму влияние на производительность). Я использую один из своих типов контента в качестве примера, но вы должны уловить идею.
var membersList = new List<SlideBannerType>();
var sortedList = membersList.OrderBy(s => s.EnableAlternateText);
var firstpage = sortedList.Take(20);
var nextpage = sortedList.Skip(20).Take(20);
Это не идеально, но очень хорошо работает для небольших (сотни, возможно, тысячи, но не десятки) наборов данных.
Вторая хорошая новость заключается в том, что Ektron использует Microsoft Search Server для версий 8.5 и выше. Он имеет гораздо более надежный API и работает фантастически (как с точки зрения скорости, так и надежности). Предпосылка фактически останется той же, что и для IndexSearch: используйте Search для получения идентификаторов в правильном порядке, а затем ContentManager (или ContentTypeManager) для получения элементов. Я использовал этот подход несколько раз, хотя и не конкретно со Smart Forms. Наилучший результат будет достигнут при обновлении до версии 8.6 и Microsoft Search Server и совместном использовании двух API для получения каждой страницы данных. При этом на тот момент было бы почти тривиально смешивать параметры расширенного поиска и фильтрации, а также новые поисковые API.
person
egandalf
schedule
13.02.2013