2010-02-24 4 views
2

Sitecore.Data.Items 유형 목록에서 항목을 필터링/제거하려고합니다. 이것은 내가 목록을 채우는 방법입니다.데이터 바인딩 전에 Sitecore 항목 필터링

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을 사용하여이 목록을 쉽게 필터링 할 수 있는지 모르겠습니다.

답변

1

나는 내 자신의 퍼즐을 풀었습니다. 내가 목록을 , 난 그냥 LINQ의 이야기 해봐을 실행하고 내 항목을 확인합니다 :

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

미래에 다른 사람이 편리 수 있습니다!

1

LINQ plus 확장 메서드 또는 래퍼 클래스는 사이트 내 항목을 쿼리하고 필터링 할 수있는 가능성을 열어줍니다.

관련 문제