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


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

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

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

В этой статье
Создание и обновление списка
Добавление поля в список
Удаление списка

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

Создание, обновление и удаление списков с использованием клиентской объектной модели аналогично выполнению этих операций с помощью серверной объектной модели, хотя клиентские операции не будут завершены до вызова метода ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)).

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

Для создания объекта списка используйте класс ListCreationInformation (JavaScript: ListCreationInformation), чтобы определить его свойства, и передайте объект методу Add(ListCreationInformation) (JavaScript: add(parameters)) класса ListCollection (JavaScript: ListCollection). В следующем примере создается список объявлений.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class CreateList
    {
        static void Main()
        {           
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = clientContext.Web;

            ListCreationInformation listCreationInfo = new ListCreationInformation();
            listCreationInfo.Title = "My Announcements List";
            listCreationInfo.TemplateType = (int)ListTemplateType.Announcements;

            List oList = oWebsite.Lists.Add(listCreationInfo);

            clientContext.ExecuteQuery();
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class CreateList

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            Dim listCreationInfo As New ListCreationInformation()
            listCreationInfo.Title = "My Announcements List"
            listCreationInfo.TemplateType = CInt(ListTemplateType.Announcements)

            Dim oList As List = oWebsite.Lists.Add(listCreationInfo)

            clientContext.ExecuteQuery()
        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';

function createList() {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    
    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title('My Announcements List');
    listCreationInfo.set_templateType(SP.ListTemplateType.announcements);

    this.oList = oWebsite.get_lists().add(listCreationInfo);

    clientContext.load(oList);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    var result = oList.get_title() + ' created.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Если нужно обновить список после его добавления, можно задать свойства списка и вызвать метод Update() (JavaScript: update()) перед вызовом ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)), как показано далее в измененном примере.

            .
            .
            .
            .
            List oList = oWebsite.Lists.Add(listCreationInfo);

            oList.Description = "New Announcements List";

            oList.Update();

            clientContext.ExecuteQuery();
            .
            .
            .
            .
            Dim oList As List = oWebsite.Lists.Add(listCreationInfo)

            oList.Description = "New Announcements List"

            oList.Update()

            clientContext.ExecuteQuery()
            .
            .
            .
            .
            this.oList = oWebsite.get_lists().add(listCreationInfo);

            oList.set_description('New Announcements List');

            oList.update();

            clientContext.load(oList);

            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));

Добавление поля в список

Используйте метод Add(Field) (JavaScript: add(field)) или AddFieldAsXml(String, Boolean, AddFieldOptions) (JavaScript: addFieldAsXml(schemaXml, addToDefaultView, параметры)) класса FieldCollection (JavaScript: FieldCollection) для добавления поля в коллекцию полей списка. В следующем примере создается поле и перед вызовом ExecuteQuery() (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) оно обновляется.

using System;
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client; 

namespace Microsoft.SDK.SharePointServices.Samples
{
    class Program
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);

            SP.List oList = clientContext.Web.Lists.GetByTitle("Announcements");

            SP.Field oField = oList.Fields.AddFieldAsXml("<Field DisplayName='MyField' Type='Number' />",

                true, AddFieldOptions.DefaultValue);

            SP.FieldNumber fieldNumber = clientContext.CastTo<FieldNumber>(oField);
            fieldNumber.MaximumValue = 100;
            fieldNumber.MinimumValue = 35;

            fieldNumber.Update();

            clientContext.ExecuteQuery();
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class AddFieldToList

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)

            Dim oList As SP.List = clientContext.Web.Lists.GetByTitle("My Announcements List")

            Dim oField As SP.Field = oList.Fields.AddFieldAsXml( _
                "<Field DisplayName='MyField' Type='Number' />", _
                True, AddFieldOptions.DefaultValue)

            Dim fieldNumber As SP.FieldNumber = clientContext.CastTo(Of FieldNumber)(oField)

            fieldNumber.MaximumValue = 100
            fieldNumber.MinimumValue = 35

            fieldNumber.Update()

            clientContext.ExecuteQuery()
        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';

function addFieldToList() {
    var clientContext = new SP.ClientContext(siteUrl);

    var oList = clientContext.get_web().get_lists().getByTitle('Announcements');

    this.oField = oList.get_fields().addFieldAsXml('<Field DisplayName=\'MyField\' Type=\'Number\' />', true, SP.AddFieldOptions.defaultValue);

    var fieldNumber = clientContext.castTo(oField,SP.FieldNumber);
    fieldNumber.set_maximumValue(100);
    fieldNumber.set_minimumValue(35);

    fieldNumber.update();

    clientContext.load(oField);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    var result = oField.get_title() + ' added.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

В следующем примере используется метод CastTo<T>(ClientObject) (JavaScript: castTo(obj, type)) объекта контекста клиента для приведения поля к типу FieldNumber (JavaScript: FieldNumber), что нужно выполнить перед запросом. В противном случае клиентская объектная модель не знает реальный тип возвращаемого объекта oField и по умолчанию использует Field (JavaScript: Field) в качестве типа.

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

Чтобы удалить список, вызовите метод DeleteObject() (JavaScript: deleteObject()) объекта списка, как показано в примере ниже.

using System;
using Microsoft.SharePoint.Client;

namespace Microsoft.SDK.SharePointServices.Samples
{
    class DeleteList
    {
        static void Main()
        {
            string siteUrl = "http://MyServer/sites/MySiteCollection";

            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = clientContext.Web;

            List oList = oWebsite.Lists.GetByTitle("My Announcements List");

            oList.DeleteObject();

            clientContext.ExecuteQuery();
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports SP = Microsoft.SharePoint.Client

Namespace Microsoft.SDK.SharePointServices.Samples
    Class DeleteList

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"

            Dim clientContext As New ClientContext(siteUrl)
            Dim oWebsite As Web = clientContext.Web

            Dim oList As List = oWebsite.Lists.GetByTitle("My Announcements List")

            oList.DeleteObject()

            clientContext.ExecuteQuery()
        End Sub        
    End Class
End Namespace
var siteUrl = '/sites/MySiteCollection';

function deleteList() {
    var clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    this.listTitle = 'My Announcements List';

    this.oList = oWebsite.get_lists().getByTitle(listTitle);

    oList.deleteObject();

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    var result = listTitle + ' deleted.';
    alert(result);
}

function onQueryFailed(sender, args) {
    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Дополнительные сведения и примеры работы со списками и другими клиентскими объектами в контексте объектной модели Silverlight Microsoft SharePoint Foundation 2010 см. в статье Использование объектной модели Silverlight.

См. также

Концепции

Создание клиентского объекта

Инструкции по использованию клиентской объектной модели

Обзор извлечения данных

Практическое руководство. Получение списков

Общие задачи программирования

Другие ресурсы

Библиотека классов для клиента

Библиотека классов ECMAScript