вторник, 18 марта 2014 г.

Как найти все списки, созданные на базе определенного шаблона

Если вам нужно найти все списки созданные на базе, например, шаблона "Задачи" (tasks), то, прежде всего, нужно знать ID типа шаблона (можно подглядеть вот тут: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splisttemplatetype.aspx )
Зная ID шаблона можно сделать вот так:
    foreach (SPList list in SPContext.Current.Web.Lists) 
    { 
        //107 - шаблон tasks 
        if (!list.Hidden & (int)list.BaseTemplate == 107) 
        { 
           //Мы нашли список на базе шаблона 
        } 
    } 
Если же вы хотите найти списки, созданные на базе какого-то кастомного шаблона, то так просто это сделать не получится. В таком случае list.BaseTemplate все равно будет содержать идентификатор базового шаблона, на базе которого создан ваш шаблон. Поэтому, чтобы как-то определить на основе вашего шаблона создан список, или на основе базового, то нужно ввести в шаблон что-то уникальное, например, добавить свой тип контента. Тогда, если базовый тип списка совпадает с базовым для вашего шаблона, то все что нужно остается - это проверить, содержит ли список ваш тип контента:
    foreach (SPList list in SPContext.Current.Web.Lists) 
    { 
        if (!list.Hidden & (int)list.BaseTemplate == 107) 
        { 
            //если мы хотим найти лист, созданный на базе кастомного шаблона 
            foreach (SPContentType cT in list.ContentTypes) 
            { 
                if (cT.Name == "MyNewContentType") 
                //мы нашли необходимый нам список 
                break; 
            } 
        } 
    } 

Комментариев нет:

Отправить комментарий