2015-04-16 2 views
2

Мне нужно отсортировать очень большое количество товаров в Sitecore. Так что я использовал отрицательное число, что-то вроде этого:Sitrecore MinValue

item.sortOrder = int.MinValue + someId 

MinValue = -2147483647 но Sitecore сортировать правильно только для значения большего, то -2143053648 так что есть разница 4430001 так что теперь мой код

item.sortOrder = int.MinValue + 4430001 + someId 

и правильно

ли кто-нибудь когда-либо испытывал что-то вроде этого сортирует, я делаю что-то не так?

+0

Зачем вам такие большие цифры? Sitecore рекомендует не более 100 предметов на любом уровне дерева. –

+0

не более 100 элементов в одной папке, но заказ - это кросс-папка. – Adel

+0

то, что мы сортируем, - это вся статья итальянской конституции. это очень сложная структура. Многие книги содержат главы, раздел ... и сортировка должна быть броском главы и раздел – Adel

ответ

1

Я не уверен, чего именно вы пытаетесь достичь, но было бы лучше определить общедоступную константу для Sitecore SortOrder. Минимальное значение где-то доступно.

public const int SortOrderMinimumValue = -2143053648; 

А затем ссылаться как этот

item.Fields["__Sortorder"].Value = SortOrderMinimumValue + someId; 

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

Для сортировки элементов по порядку сортировки затем нужно будет сделать следующее

public class ItemComparer : IComparer 
{ 
    public int CompareSortOrder(Item item1, Item item2) 
    { 
     int sortOrder1; 
     bool parsed1 = int.TryParse(item1["__Sortorder"], out sortOrder1); 

     int sortOrder2; 
     bool parsed2 = int.TryParse(item2["__Sortorder"], out sortOrder2); 

     if (!parsed1 || !parsed2) 
      throw new Exception("Sort order value is incorrect type"); 

     if (sortOrder1 < sortOrder2) 
      return -1; 
     if (sortOrder1 > sortOrder2) 
      return 1; 
     else 
      return 0; 
    } 
} 

А затем ссылаться на код при сортировке;

var itemComparer = new ItemComparer(); 
items.Sort(itemComparer.CompareSortOrder); 
+0

проблема не с кодом, на sitecore я нашел точно такое же значение, которое вычисляет код ... – Adel

+0

thank yout jRobbins но проблема не в коде, на sitecore я нашел точно такое же значение, которое я вычислил с этим кодом, или какой-то код, действительно близкий к этому ... Но когда дело доходит до элемента сортировки в соответствии с sortorder, я что значение, близкое к int.Minvalue, не работает, элемент переходит прямо в последнюю позицию – Adel

Смежные вопросы