Sitrecore MinValue

时间:2015-04-16 11:11:26

标签: sitecore min

我需要在Sitecore中对大量项目进行排序。 所以我使用了负数,就像这样:

item.sortOrder = int.MinValue + someId

minValue = -2147483647 但sitecore只能正确排序,大于-2143053648,因此存在4430001的差异 所以现在我的代码是

item.sortOrder = int.MinValue + 4430001 + someId

并正确排序

有没有人经历过这样的事情,我做错了什么?

1 个答案:

答案 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);