Compartir a través de


Procedimiento para crear o eliminar listas

Última modificación: viernes, 27 de mayo de 2011

Hace referencia a: SharePoint Foundation 2010

En este artículo
Creación de una lista con un tipo de plantilla de lista
Creación de una lista con una plantilla de lista
Eliminación de una lista

Disponible en SharePoint Online

En los ejemplos de este tema se muestra cómo usar el modelo de objetos de servidor de SharePoint Foundation para trabajar con listas en un sitio web o en una colección de sitios.

Nota

En los ejemplos de código de este tema se usan miembros de la clase Microsoft.SharePoint.SPContext para obtener la colección de sitios, el sitio web o la lista actuales. Fuera de un contexto HTTP, como en una aplicación de consola o una aplicación Windows, se pueden obtener referencias a los objetos clave con un método diferente. En lugar de usar un objeto de Microsoft.SharePoint.SPContext, use el constructor SPSite() para crear una instancia de una colección específica de sitios y obtener objetos. Para obtener más información, vea Obtención de referencias a sitios, aplicaciones web y otros objetos clave.

Creación de una lista con un tipo de plantilla de lista

Para crear una nueva lista, use una de las sobrecargas del método Add() de la clase SPListCollection.

En el siguiente ejemplo se agrega una nueva lista Generic, Events o Announcements, según los datos proporcionados por el usuario. Se usa una cláusula Switch para determinar el tipo de lista que especifica el usuario y establece el tipo de plantilla de lista en consecuencia.

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

En el ejemplo se crea una instancia de un objeto SPListTemplateType para que contenga el tipo de plantilla de lista especificada por el usuario. Este objeto se debe pasar como parámetro en el método Add(String, String, SPListTemplateType). En el ejemplo se presupone la existencia de dos cuadros de texto donde el usuario puede escribir un título y una descripción, así como una lista desplegable que muestra los tipos de lista entre los que puede seleccionar el usuario.

Creación de una lista con una plantilla de lista

Además de usar la enumeración SPListTemplateType para crear una lista a partir de un tipo de plantilla, también puede crear una lista a partir de un objeto SPListTemplate, que representa una plantilla de lista específica que se ha creado en la interfaz de usuario al guardar una lista existente como una plantilla o bien un esquema de lista en %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\FEATURES que define un tipo de lista. Se puede usar la propiedad ListTemplates de la clase SPWeb para devolver una colección de objetos de plantilla de lista y se puede usar un indizador de nombres para especificar la plantilla de lista que se va a usar. Esto se muestra en el ejemplo siguiente, que presupone la existencia de un sitio de área de reuniones para la toma de decisiones.

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

Con el método GetCustomListTemplates de la clase SPSite, en el siguiente ejemplo se devuelven las plantillas de lista personalizadas para un sitio especificado y se crea una nueva lista basada en una plantilla de lista especificada.

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

Puede agregar una lista a varios sitios web de una colección de sitios, como se muestra en el ejemplo siguiente, que crea una lista genérica en cada uno de los sitios web, en función del título y de la descripción que se pasa de dos cuadros de texto al código. La propiedad AllWebs de la clase SPSite se usa para devolver la colección de todos los sitios web existentes en el sitio.

El ejemplo supone la existencia de dos cuadros de texto en la página .aspx que contiene un formulario.

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

Eliminación de una lista

Para eliminar una lista, debe especificar el GUID de la lista como el parámetro del método Delete. Use la propiedad ID de la clase SPList para buscar el 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);

En el ejemplo anterior, se presupone la existencia de un cuadro de texto en el que el usuario especifica el nombre de la lista.

Para eliminar una lista de varios sitios web, el ejemplo siguiente usa bucles anidados para explorar en profundidad en una lista cuyo título coincida con el especificado en un cuadro de texto. El ejemplo supone la existencia de un cuadro de texto en la página .aspx que contiene un formulario.

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

En el ejemplo, la propiedad Title de la clase SPList se usa para identificar una lista de la colección de listas para cada sitio web que coincida con el título especificado. La propiedad ID devuelve el identificador único global (GUID) de la lista, que se pasa como parámetro para el método Delete.

Los ejemplos anteriores requieren una directiva using (Imports en Microsoft Visual Basic) para el espacio de nombres de Microsoft.SharePoint.

Vea también

Referencia

Microsoft.SharePoint

Conceptos

Trabajar con objetos de listas y colecciones

Uso de Visual Studio para el desarrollo de SharePoint

Validación de seguridad y realización de envíos para actualizar datos

Concesión de privilegio