Фильтрация элементов Sitecore перед привязкой данных - PullRequest
2 голосов
/ 24 февраля 2010

Я хочу отфильтровать / удалить элементы из списка типа Sitecore.Data.Items. Вот так я заполняю список.

List<Item> actueelItems = Sitecore.Context.Database.SelectItems("/sitecore/content/destil_nl/Home/").ToList();

У меня есть метод, который проверяет, является ли элемент действительным. Это вернет истину или ложь. Я хочу создать новый список, который я буду вызывать FilterList только с допустимыми элементами в нем.

Какой лучший способ добиться этого?

Кстати, мой метод проверки:

public static bool ValidateItem(Item item)
    {
        return ValidateItem(item, true);
    }


public static bool ValidateItem(Item item, bool checkVisualization)
{
    bool result = true;
    if (item.Versions.Count <= 0 ||
        !item.Publishing.IsValid(DateTime.Today, false) ||
        (checkVisualization && item.Visualization.GetLayout(Sitecore.Context.Device) == null))
    {
        result = false;
    }

    return result;
}

В настоящее время я использую проверку в itemDataBound, но тогда элемент все равно будет показан, только с неправильными значениями Я решил, что должен отфильтровать список и дать отфильтрованный список в качестве источника данных. Я просто не знаю, как легко отфильтровать этот список с помощью ValidateItem.

Ответы [ 2 ]

1 голос
/ 02 марта 2010

Методы расширения LINQ plus или классы-обертки открывают множество возможностей для запросов и фильтрации элементов sitecore.

1 голос
/ 24 февраля 2010

Я решил свою собственную головоломку. Там, где у меня есть список, я просто запускаю linq .where и проверяю свои пункты:

actueelItems = actueelItems.Where(c => MenuItemHelper.ValidateItem(c, false)).ToList<Item>();

Может быть пригодится кому-то еще в будущем!

...