我對你有好消息和壞消息。
首先,好消息。您可以按照內容屬性對之前的條件對象進行排序,然後在之前抽取20個項目。您需要使用條件的OrderByField和OrderByDirection屬性。試圖訂購基礎上,智能表中的字段項目時
criteria.OrderByField = ContentProperty.DateCreated;
criteria.OrderByDirection = EkEnumeration.OrderByDirection.Descending;
壞消息來了。你可能能夠使用IndexSearch API來做到這一點,但由於Ektron 8.0 *仍然依賴微軟的索引服務,我不是那種方法的粉絲,也沒有任何代碼可以共享。如果您選擇走這條路線,前提是使用搜索以正確的順序返回內容ID,然後使用條件按照原樣獲取具有這些ID的項目。
你可以做些什麼只用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 8.5及更高版本。這具有更強大得多的API,並且在速度和可靠性方面表現出色(無論在速度還是可靠性方面)。前提將保持與IndexSearch相同,使用Search以正確的順序獲取ID,然後使用ContentManager(或ContentTypeManager)獲取項目。我已經多次使用這種方法,儘管沒有專門針對Smart Forms。您的最佳結果將來自升級到8.6和Microsoft Search Server,並一起使用這兩個API來獲取每頁數據。這樣做的話,混合高級搜索和過濾選項以及新的搜索API實際上幾乎是微不足道的。
你在什麼領域排序? contentdata字段,智能表單字段,元數據字段等?知道會影響答案。 – egandalf 2013-02-12 13:31:13
在一種情況下,我需要根據contentdata進行排序,而在另一種情況下,smartform數據 – zkent 2013-02-12 15:43:12
然而,後一種情況是我最需要的一種情況。 – zkent 2013-02-12 18:50:38