如何:创建或删除列表

上次修改时间: 2011年5月27日

适用范围: SharePoint Foundation 2010

本文内容
使用列表模板类型创建列表
使用列表模板创建列表
删除列表

在 SharePoint Online 中提供

本主题中的示例演示如何使用 SharePoint Foundation 服务器对象模型以使用网站或网站集中的列表。

备注

本主题中的代码示例使用 Microsoft.SharePoint.SPContext 类的成员来获取当前网站集、网站或列表。在 HTTP 上下文的外部(例如,在控制台应用程序或 Windows 应用程序中),可以使用不同的方法获取对主要对象的引用。不必使用 Microsoft.SharePoint.SPContext 对象,而可以改为使用 SPSite() 构造函数实例化特定的网站集并获取对象。有关详细信息,请参阅获取对网站、Web 应用程序和其他关键对象的引用

使用列表模板类型创建列表

若要创建新的列表,请使用 SPListCollection 类的 Add() 方法重载之一。

下面的示例基于用户输入添加新的 Generic、Events 或 Announcements 列表。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 对象创建列表,该对象表示一个已在 UI 中创建的特定列表模板(通过将一个现有列表保存为模板),或者表示 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES 中用于定义列表类型的列表架构。SPWeb 类的 ListTemplates 属性可用于返回列表模板对象的集合,而名称索引器可用于指定要使用的列表模板。下面的示例演示了上述情况,它假定存在一个"决议会议工作区"网站。

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

通过使用 SPSite 类的 GetCustomListTemplates 方法,下一示例将返回指定网站的自定义列表模板,并创建基于指定列表模板的新列表。

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

您可向一个网站集的多个网站中添加列表,如以下示例中所示。该示例基于从两个文本框传递给代码的标题和说明,在每个网站上创建一个一般列表。SPSite 类的 AllWebs 属性用于返回网站上存在的所有网站的集合。

该示例假定在包含一个表单的 .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 方法的参数。使用 SPList 类的 ID 属性可查找 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);        
        }    
}}

在示例中,SPList 类的 Title 属性用于标识每个网站的列表集合中与指定标题匹配的列表。ID 属性返回列表的全局唯一标识符 (GUID),并作为 Delete 方法的参数进行传递。

上一示例要求对 Microsoft.SharePoint 命名空间使用 using 指令(在 Microsoft Visual Basic 中为 Imports)。

请参阅

引用

Microsoft.SharePoint

概念

使用列表对象和集合

使用 Visual Studio 进行 SharePoint 开发

安全验证并进行发布以更新数据

特权提升