Ektron 801 SP1
我使用以下代码来获取一些智能表单内容。我是否可以预先排序(使用OrderByField?)在我取20行之前?我正在对成员列表进行排序,但这是事后的事情,有点无用。我遗漏了什么?
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);发布于 2013-02-14 01:01:55
我有好消息和坏消息要告诉你。
首先,有个好消息。在提取这20个项目之前,您可以使用Criteria对象按内容属性进行排序。您将希望使用条件的OrderByField和OrderByDirection属性。
criteria.OrderByField = ContentProperty.DateCreated;
criteria.OrderByDirection = EkEnumeration.OrderByDirection.Descending;当尝试基于Smart Form中的字段对项进行排序时,出现了坏消息。你也许可以使用Ektron来做到这一点,但是由于IndexSearch 8.0*仍然依赖于微软的索引服务,所以我并不喜欢这种方法,也没有任何代码可以分享。如果您选择使用该路线,前提是使用搜索以正确的顺序返回内容If,然后按您的方式使用条件获取具有这些If的项目。
对于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 for versions 8.5或更高版本。这有一个非常非常健壮的API,并且执行起来非常棒(在速度和可靠性方面都是如此)。前提实际上与搜索相同,使用IndexSearch以正确的顺序获取ID,然后使用ContentManager (或ContentTypeManager)获取项。我已经使用过这种方法好几次了,尽管不是专门针对Smart Forms。如果升级到8.6和Microsoft Search Server并同时使用这两个API来获取每页数据,则会获得最佳结果。在这样做的时候,将高级搜索和过滤器选项与新的搜索API混合在一起实际上几乎是微不足道的。
https://stackoverflow.com/questions/14825272
复制相似问题