Поделиться через


Создание и удаление списков

Дата последнего изменения: 27 мая 2011 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Создание списка с помощью типа шаблонов списков
Создание списка с помощью шаблона списков
Удаление списка

Доступно на сайте SharePoint Online

Примеры в данном разделе показывают использование серверной объектной модели SharePoint Foundation для работы со списками веб-сайта или семейства сайтов.

ПримечаниеПримечание

В примерах программ в данном разделе используются члены класса Microsoft.SharePoint.SPContext для получения текущего семейства сайтов, веб-сайта или списка. Вне контекста HTTP, например в консольном приложении или в приложении Windows, ссылки на ключевые объекты получаются с помощью другого метода. Вместо использования объекта Microsoft.SharePoint.SPContext для создания экземпляра определенного семейства сайтов и получения объектов используйте конструктор SPSite(). Дополнительные сведения см. в разделе Получение ссылок на сайты, веб-приложения и другие ключевые объекты.

Создание списка с помощью типа шаблонов списков

Для создания нового списка используйте одну из перегрузок метода Add() класса SPListCollection.

Следующий пример иллюстрирует добавление нового списка "Общий", "События" или "Извещения" на основе вводимых пользователем данных. Условие Switch используется для определения типа списка, который создает пользователь, задающий соответствующий тип шаблона списка.

Dim mySite As SPWeb = SPContext.Current.Web
Dim lists As SPListCollection = mySite.Lists

Dim listTitle As String = TextBox1.Text
Dim listDescription As String = TextBox2.Text
Dim listType As String = ListBox1.SelectedItem.Text

Dim listTemplateType As New SPListTemplateType()

Select Case listType
    Case "Generic List"
        listTemplateType = SPListTemplateType.GenericList
        Exit 
    Case "Events"
        listTemplateType = SPListTemplateType.Events
        Exit
    Case "Announcements"
        listTemplateType = SPListTemplateType.Announcements
        Exit 
End Select
lists.Add(listTitle, listDescription, listTemplateType)
SPWeb mySite = SPContext.Current.Web;
SPListCollection lists = mySite.Lists;

string listTitle = TextBox1.Text;
string listDescription = TextBox2.Text;
string listType = ListBox1.SelectedItem.Text;

SPListTemplateType listTemplateType = new SPListTemplateType();

switch(listType)
{
    case "Generic List":
    {
        listTemplateType = SPListTemplateType.GenericList;
        break;
    }

    case "Events":
    {
        listTemplateType = SPListTemplateType.Events;
        break;
    }

    case "Announcements":
    {
        listTemplateType = SPListTemplateType.Announcements;
        break;
    }
}

lists.Add(listTitle, listDescription, listTemplateType);

В этом примере создается объект SPListTemplateType, содержащий тип шаблона списка, указанный пользователем. Этот объект должен быть передан как параметр в метод Add(String, String, SPListTemplateType). В примере подразумевается наличие двух текстовых полей, в которые пользователь может ввести заголовок и описание, а также раскрывающегося списка типов списков, из которого пользователь может сделать выбор.

Создание списка с помощью шаблона списков

Можно не только использовать перечисление SPListTemplateType для создания списка из типа шаблонов, но и создавать список из объекта SPListTemplate, представляющего либо определенный шаблон списков, созданный в пользовательском интерфейсе сохранением существующего списка в качестве шаблона, либо схему списков в папке %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES, определяющую тип списков. Свойство ListTemplates класса SPWeb можно использовать для возврата набора объектов шаблонов списков, а индексатор имен может быть использован для указания нужного шаблона списка. Это иллюстрируется следующим примером, в котором подразумевается наличие сайта "Рабочая область для собраний — Решения".

Dim mySite As SPWeb = SPContext.Current.Web

Dim template As SPListTemplate = mySite.ListTemplates("Decisions")
mySite.Lists.Add("My Decisions", "This is a list of decisions", 
   template)
SPWeb mySite = SPContext.Current.Web;

SPListTemplate template = mySite.ListTemplates["Decisions"];
mySite.Lists.Add("My Decisions", "This is a list of decisions", 
   template);

В следующем примере показано, как с помощью метода GetCustomListTemplates класса SPSite возвращаются шаблоны настраиваемых списков для указанного сайта и создается новый список, основанный на выбранном шаблоне.

Dim siteCollection As SPSite = SPContext.Current.Site
Dim mySite As SPWeb = SPContext.Current.Web
Dim listTemplates As SPListTemplateCollection = siteCollection.GetCustomListTemplates(mySite)
Dim listTemplate As SPListTemplate = listTemplates("Custom List Template")

mySite.Lists.Add("Custom List", "A list created from a custom list template in the list template catalog", listTemplate)
SPSite siteCollection = SPContext.Current.Site;
SPWeb mySite = SPContext.Current.Web;
SPListTemplateCollection listTemplates = siteCollection.GetCustomListTemplates(mySite);
SPListTemplate listTemplate = listTemplates["Custom List Template"];

mySite.Lists.Add("Custom List", "A list created from a custom list template in the list template catalog", listTemplate);

Можно добавить список в несколько веб-сайтов в семействе сайтов, как показано в следующем примере, в котором создается общий список на каждом из веб-сайтов на основе заголовка и описания, передаваемых в код из двух текстовых полей. Свойство AllWebs класса SPSite используется для возврата семейства всех веб-сайтов, существующих на сайте.

В примере подразумевается существование двух текстовых полей на странице ASPX, содержащей форму.

Dim listTitle As String = TextBox1.Text.ToString()
Dim listDescription As String = TextBox2.Text.ToString()
Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs

Dim web As SPWeb
For Each web In  allWebs    
    Dim allLists As SPListCollection = web.Lists    
    allLists.Add(listTitle, listDescription, SPListTemplateType.GenericList)
Next web
string listTitle = TextBox1.Text.ToString();
string listDescription = TextBox2.Text.ToString();
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;

foreach (SPWeb web in allWebs){    
    SPListCollection allLists = web.Lists;
    allLists.Add(listTitle,listDescription, SPListTemplateType.GenericList);
}

Удаление списка

Для удаления списка необходимо указать код GUID данного списка как параметр метода Delete. Используйте свойство ID класса SPList для получения кода GUID.

Dim mySite As SPWeb = SPContext.Current.Web
Dim lists As SPListCollection = mySite.Lists

Dim list As SPList = lists(TextBox1.Text)
Dim listGuid As System.Guid = list.ID

lists.Delete(listGuid) 
SPWeb mySite = SPContext.Current.Web;
SPListCollection lists = mySite.Lists;

SPList list = lists[TextBox1.Text];
System.Guid listGuid = list.ID;

lists.Delete(listGuid);

В приведенном выше примере подразумевается наличие текстового поля, в которое пользователь вводит имя списка.

Чтобы удалить список из нескольких веб-сайтов, в следующем примере используются вложенные циклы для обнаружения списка, название которого соответствует заданному в текстовом поле. В этом примере предполагается существование страницы ASPX с формой с двумя текстовыми полями.

Dim mySite As SPSite = SPContext.Current.Site
Dim allWebs As SPWebCollection = mySite.AllWebs
Dim web As SPWeb

For Each web In  allWebs    
    Dim allLists As SPListCollection = web.Lists    
    Dim i As Integer    

    For i = 0 To allLists.Count - 1        
        Dim list As SPList = allLists(i)        
 
        If list.Title = TextBox1.Text Then            
            Dim listGuid As Guid = list.ID          
            allLists.Delete(listGuid)        
        End If    
    Next i
Next web
SPSite mySite = SPContext.Current.Site;
SPWebCollection allWebs = mySite.AllWebs;

foreach (SPWeb web in allWebs){    
    SPListCollection allLists = web.Lists; 
   
    for (int i=0; i<allLists.Count; i++)    
    {        
        SPList list = allLists[i];        

        if (list.Title == TextBox1.Text)        
        {            
            Guid listGuid = list.ID;            
            allLists.Delete(listGuid);        
        }    
}}

В примере свойство Title класса SPList используется для определения списка в коллекции списков для каждого веб-сайта, соответствующего заданному названию. Свойство ID возвращает идентификатор GUID списка, который передается в качестве параметра для метода Delete.

В предыдущих примерах требуется директива using (Imports в Microsoft Visual Basic) для пространства имен Microsoft.SharePoint.

См. также

Ссылка

Microsoft.SharePoint

Концепции

Работа с объектами List и коллекциями

Использование Visual Studio для разработки SharePoint

Проверка безопасности и отправка данных для обновления

Несанкционированное получение прав