首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序Ektron内容类型

排序Ektron内容类型
EN

Stack Overflow用户
提问于 2013-02-12 12:16:23
回答 1查看 707关注 0票数 0

Ektron 801 SP1

我使用以下代码来获取一些智能表单内容。我是否可以预先排序(使用OrderByField?)在我取20行之前?我正在对成员列表进行排序,但这是事后的事情,有点无用。我遗漏了什么?

代码语言:javascript
复制
Criteria<ContentProperty> criteria1 = new Criteria<ContentProperty>();
criteria1.AddFilter(ContentProperty.XmlConfigurationId, CriteriaFilterOperator.EqualTo, MEMBERS_ID);
criteria1.PagingInfo = new PagingInfo(20);

List<ContentType<member>> memberslist = contentTypeManager.GetList(criteria1);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-14 01:01:55

我有好消息和坏消息要告诉你。

首先,有个好消息。在提取这20个项目之前,您可以使用Criteria对象按内容属性进行排序。您将希望使用条件的OrderByField和OrderByDirection属性。

代码语言:javascript
复制
criteria.OrderByField = ContentProperty.DateCreated;
criteria.OrderByDirection = EkEnumeration.OrderByDirection.Descending;

当尝试基于Smart Form中的字段对项进行排序时,出现了坏消息。你也许可以使用Ektron来做到这一点,但是由于IndexSearch 8.0*仍然依赖于微软的索引服务,所以我并不喜欢这种方法,也没有任何代码可以分享。如果您选择使用该路线,前提是使用搜索以正确的顺序返回内容If,然后按您的方式使用条件获取具有这些If的项目。

对于API,您可以在加载数据后使用Microsoft LINQ对数据进行排序,但为了以正确的顺序获得正确的结果,您必须首先加载所有项(理想情况下,缓存它们以最小化对性能的影响)。我以我的一种内容类型为例,但您应该明白这一点。

代码语言:javascript
复制
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 for versions 8.5或更高版本。这有一个非常非常健壮的API,并且执行起来非常棒(在速度和可靠性方面都是如此)。前提实际上与搜索相同,使用IndexSearch以正确的顺序获取ID,然后使用ContentManager (或ContentTypeManager)获取项。我已经使用过这种方法好几次了,尽管不是专门针对Smart Forms。如果升级到8.6和Microsoft Search Server并同时使用这两个API来获取每页数据,则会获得最佳结果。在这样做的时候,将高级搜索和过滤器选项与新的搜索API混合在一起实际上几乎是微不足道的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14825272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档