javascript - 使用 JavaScript 从 SP 列表中隐藏/删除 ContentType

标签 javascript rest sharepoint sharepoint-2013 csom

我正在通过 REST API 创建 SP 列表,创建列表后,我将自定义 ContentType 添加到该列表。 因此,我的自定义 ContentType 应该是该列表上的默认 CT。

我已经尝试过这个,但它不起作用,可能我的 contentType 必须是一个对象..

let dfd = new $.Deferred();
let targetUrl = config.App + subsiteTitle;
let clientContext = new SP.ClientContext(targetUrl);

if (clientContext !== undefined && clientContext !== null) {
  let web = clientContext.get_web();
  let listCollection = web.get_lists();
  let list = listCollection.getByTitle(listTitle);
  let contentType = list.get_contentTypes().getById('0x01');
  contentType.deleteObject();

  clientContext.executeQueryAsync(
    Function.createDelegate(this, function() {
      dfd.resolve(this);
    }),
    Function.createDelegate(this, function(sender, args) {
      console.log('Failed to remove content type ' + args.get_message());
    })
  )
}

return dfd.promise();

有谁知道如何使用 JavaScript 从该列表中隐藏或删除“Item”ContentType,或者将我的自定义 ContentType 设置为默认值,无论是通过 REST API 还是 JSOM? 非常感谢!

最佳答案

在您的示例中缺少两个操作:

示例

let ctx = new SP.ClientContext(targetUrl);

let ct = ctx.get_site().get_rootWeb().get_contentTypes().getById(contentTypeId);
let targetList = ctx.get_web().get_lists().getByTitle(listTitle);
let listContentTypes = targetList.get_contentTypes();
listContentTypes.addExistingContentType(ct); //1. add content type into list

var folder = targetList.get_rootFolder();
ctx.load(folder, 'ContentTypeOrder');
ctx.load(ct);
executeQuery(ctx)
    .then(() => {

        //2. set added content type as a default one   
        let ctIdList = folder.get_contentTypeOrder().sort((x,y) =>{ 
            return x.get_stringValue().indexOf(contentTypeId) != -1 ? -1 : y.get_stringValue().indexOf(contentTypeId) != -1 ? 1 : 0; 
        });
        folder.set_uniqueContentTypeOrder(ctIdList);
        folder.update();
        return executeQuery(ctx);
    })
    .then(() => {
        console.log("Done!");
    })

哪里

function executeQuery(context) {
    return new Promise((resolve, reject) => {
        context.executeQueryAsync(function () {
            resolve();
        }, function (sender, args) {
            reject(args);
        });
    });
}

关于javascript - 使用 JavaScript 从 SP 列表中隐藏/删除 ContentType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49251300/

相关文章:

javascript - ExtJS 自动调整表单大小

javascript - 选择的 jquery 在重新生成的内容上失败

java - 无法使用 nexmo 或 thilio 发送短信

java - 无法使用 java 上传共享点文件夹上的文档

c#-4.0 - 从 cerner 的 EMR/EHR 获取数据

javascript - $资源:badcfg when calling sharepoint rest service using angular

javascript - 根据另一个元素的渲染高度设置元素的底部位置

javascript - 为什么我的预加载器动画在预加载完成后继续显示在我的网站上?

php - nginx.conf 用于 restful api

java - 固定 : "No mapping found" Trying to set up a RESTfull interface using Spring-MVC