如何:使用 JavaScript 创建、更新和删除列表

上次修改时间: 2011年6月20日

适用范围: SharePoint Foundation 2010

本文内容
使用 JavaScript 创建和更新列表
使用 JavaScript 向列表中添加字段
使用 JavaScript 删除列表

通过客户端对象模型创建、更新和删除列表与使用服务器对象模型执行这些任务的方式类似,只是在调用 executeQueryAsync(succeededCallback, failedCallback) 之前,客户端操作不会完成。

使用 JavaScript 创建和更新列表

若要使用 ECMAScript(JavaScript、JScript)创建列表对象,请使用 ListCreationInformation 对象定义其属性,然后将该对象传递给 ListCollection 对象的 add(parameters) 函数。以下示例创建一个新公告列表。

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

如果在添加列表后需要更新该列表,可以在调用 executeQueryAsync(succeededCallback, failedCallback) 之前设置列表属性并调用 update() 函数,下面显示对上一示例所做的修改。

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

使用 JavaScript 向列表中添加字段

使用 FieldCollection 对象的 add(field)addFieldAsXml(schemaXml, addToDefaultView, options) 函数向列表的字段集合中添加字段。以下示例创建一个字段,然后在调用 executeQueryAsync(succeededCallback, failedCallback) 之前更新该字段。

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(obj, type) 函数将该字段强制转换为 FieldNumber 对象,您必须在执行查询之前完成此操作。否则,客户端对象模型无法知道返回的对象 oField 的真正类型,并默认使用 Field 作为对象类型。

使用 JavaScript 删除列表

若要删除列表,请调用列表对象的 deleteObject() 函数,如下面的示例所示。

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

请参阅

概念

创建客户端对象

客户端对象模型准则

数据检索概述

如何:使用 JavaScript 检索列表

JavaScript 对象模型中的常见编程任务

其他资源

ECMAScript 类库