在数据绑定之前过滤掉Sitecore项目

时间:2010-02-24 09:36:38

标签: c# .net sitecore

我想过滤掉/删除Sitecore.Data.Items类型列表中的项目。 这就是我填写清单的方式。

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

我有一个检查项目有效的方法。这将返回true或false。 我想建立一个新的列表,我将调用filteredList,只包含其中的有效项。

实现这一目标的最佳方式是什么?

顺便说一下,这是我的验证方法:

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 个答案:

答案 0 :(得分:1)

我已经解决了自己的难题。 我有列表,我将运行一个linq .where并验证我的项目:

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

将来可能会为其他人提供便利!

答案 1 :(得分:1)

LINQ plus扩展方法或包装类为查询和过滤sitecore项提供了很多可能性。