2010-02-24 6 views
2

Je souhaite filtrer/supprimer des éléments d'une liste de type Sitecore.Data.Items. Voici comment je remplis la liste.Filtrage des éléments Sitecore avant le databind

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

J'ai une méthode qui vérifie si un élément est valide. Cela retournera vrai ou faux. Je veux mettre en place une nouvelle liste, que j'appellerai le filteredList avec seulement les éléments valides dedans.

Quelle est la meilleure façon d'y parvenir?

Ce par la voie est ma méthode validate:

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; 
} 

Actuellement, je suis en utilisant le chèque dans le ItemDataBound mais l'élément sera affiché encore, que les mauvaises valeurs. Je me suis dit que je devais filtrer la liste, et donner la liste filtrée comme source de données. Je ne sais pas comment je peux facilement filtrer cette liste en utilisant le ValidateItem.

Répondre

1

J'ai résolu mon propre casse-tête. Où j'ai la liste, je vais juste courir un .où LINQ et valider mes articles:

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

est peut-être à portée de main pour quelqu'un d'autre à l'avenir!

1

Les méthodes d'extension LINQ plus ou les classes wrapper ouvrent de nombreuses possibilités d'interrogation et de filtrage des éléments de sitecore.

Questions connexes