我需要在Sitecore中对大量项目进行排序。 所以我使用了负数,就像这样:
item.sortOrder = int.MinValue + someId
minValue = -2147483647 但sitecore只能正确排序,大于-2143053648,因此存在4430001的差异 所以现在我的代码是
item.sortOrder = int.MinValue + 4430001 + someId
并正确排序
有没有人经历过这样的事情,我做错了什么?
答案 0 :(得分: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);