Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从SP列表中隐藏/删除ContentType_Javascript_Rest_Sharepoint_Sharepoint 2013_Csom - Fatal编程技术网

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

使用JavaScript从SP列表中隐藏/删除ContentType,javascript,rest,sharepoint,sharepoint-2013,csom,Javascript,Rest,Sharepoint,Sharepoint 2013,Csom,我正在通过RESTAPI创建一个SP列表,创建列表后,我将向该列表添加一个自定义ContentType。 因此,我的自定义ContentType应该是该列表上的默认CT 我已经试过了,但它不起作用,可能我的contentType必须是一个对象 let dfd = new $.Deferred(); let targetUrl = config.App + subsiteTitle; let clientContext = new SP.ClientContext(targetUrl); if

我正在通过RESTAPI创建一个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设置为默认值,不管是通过RESTAPI还是JSOM?
非常感谢

我们可以使用下面的代码将自定义内容类型设置为默认值。注意:将“listname”修改为您的列表名

<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(ChangeContentTypeOrder, "sp.js");
function ChangeContentTypeOrder(){
    var listname="CustomList";
    var c = new SP.ClientContext.get_current();
    var folder = c.get_web().get_lists().getByTitle(listname).get_rootFolder();
    c.load(folder, 'ContentTypeOrder');
    c.executeQueryAsync(function() {
        folder.set_uniqueContentTypeOrder(folder.get_contentTypeOrder().reverse()); 
        folder.update();
        c.executeQueryAsync();
    }); 
}
</script>

ExecuteOrderLayUntillScriptLoaded(ChangeContentTypeOrder,“sp.js”);
函数ChangeContentTypeOrder(){
var listname=“CustomList”;
var c=new SP.ClientContext.get_current();
var folder=c.get_web().get_lists().getByTitle(listname.get_rootFolder();
c、 加载(文件夹“ContentTypeOrder”);
c、 executeQueryAsync(函数(){
folder.set_uniqueContentTypeOrder(folder.get_contentTypeOrder().reverse());
folder.update();
c、 executeQueryAsync();
}); 
}
我们可以在列表设置中使用SharePoint UI进行设置


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

  • 将内容类型添加到列表中可以用于此目的
  • 为了将特定内容设置为默认内容,需要 指定为第一次使用
示例

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