使用自定义内容类型和REST API中的列表视图创建SharePoint 2013列表 [英] Create SharePoint 2013 list using custom content type with list view in REST API

查看:56
本文介绍了使用自定义内容类型和REST API中的列表视图创建SharePoint 2013列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好

我使用REST API创建了一个列表,然后添加了该列表的自定义内容类型.自定义内容类型已成功添加到列表,但是自定义内容类型字段在默认列表视图中不可用.

下面是我的代码示例:

//显示错误消息.
函数fnOnError(错误){
   警报(错误);
}

    

//发布REST调用
函数RestCallToPostItems(url,varData,successHandler,errorHandler){
    $ .ajax({
       网址:url,
类型:"POST",
数据:varData,
标题:{
接受":"application/json; odata = verbose",
内容类型":"application/json; odata = verbose",
"X-RequestDigest":$("#__ REQUESTDIGEST").val()
},
       成功:successHandler,
       错误:errorHandler,
    });
}

///将自定义内容类型添加到列表
var varAddCustomContentType = createListData.fnAddCustomContentType(varListName,varContentTypeID);
varAddCustomContentType.done(function(varListInfo){
alert(varListInfo);
})
.fail(fnOnError);

var createListData = {
fnAddCustomContentType:函数(varListName,varCTID){
var deferred = jQuery.Deferred();
var varMetaData = JSON.stringify({'contentTypeId':''+ varCTID +''}));
var endpointUrl = _spPageContextInfo.webAbsoluteUrl +``/_api/web/lists/GetByTitle('" + varListName +")/ContentTypes/AddAvailableContentType;
RestCallToPostItems(endpointUrl,varMetaData,  function(data){
deferred.resolve(data);
},
功能(错误)
{
deferred.reject(error.responseText);

});
返回deferred.promise();
}
}

我的上述代码正常运行,并且自定义内容类型已添加到列表中,但默认视图中没有这些列.那么如何将此内容类型列添加到默认视图.

感谢你的帮助.预先感谢.

 

解决方案

您可以使用REST API将字段添加到列表视图中.

在端点下方使用可先获取默认视图.

示例代码:

< script type =" text/javascript"src ="/_ layouts/15/JS/jquery.min.js"</script>
    < script type =文本/javascript">
        函数AddFieldToView(){
            var endPointUrl = _spPageContextInfo.webAbsoluteUrl +"/_api/web/lists/getbytitle('MyList2')/Views(guid'8a5b60ac-e937-435c-959a-0613cef931df')/ViewFields/AddViewField"
            var标头= {
                "accept":"application/json; odata = verbose",
                "content-Type":"application/json; odata = verbose",
                "X-RequestDigest":jQuery("#__ REQUESTDIGEST").val()
            };
            var call = jQuery.ajax({
                网址:endPointUrl,
                类型:"POST",
                数据:JSON.stringify({
                    //您的字段
                    'strField':'F2'
                }),
                标头:标头
            });
            call.done(function(data,textStatus,jqXHR){
                警报(查看更新成功");
            });
            call.fail(function(data,errorcode,errormessage){
                alert(JSON.stringify(data));
            });
        }
    </script> 

参考线程:

type: "POST",
data: varData,
headers: {
"Accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose",
"X-RequestDigest": $("#__REQUESTDIGEST").val()
},
        success: successHandler,
        error: errorHandler,
    });
}

//Add Custom Content Type to list
var varAddCustomContentType = createListData.fnAddCustomContentType(varListName, varContentTypeID);
varAddCustomContentType.done(function(varListInfo) {
alert(varListInfo);
})
.fail(fnOnError);

var createListData = {
fnAddCustomContentType : function(varListName, varCTID){
var deferred = jQuery.Deferred();
var varMetaData = JSON.stringify({'contentTypeId':'' + varCTID + ''});
var endpointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/GetByTitle('"+varListName+"')/ContentTypes/AddAvailableContentType";
RestCallToPostItems(endpointUrl, varMetaData,  function (data) {
deferred.resolve(data);
},
function(error)
{
deferred.reject(error.responseText);

});
return deferred.promise();
}
}

My above code is working properly and the custom content type is added to the list but the columns are not available into the default view. So how to add this content type columns to the default view.

Can anyone please help me out here with this.

Appreciate your help. Thanks in advance.

 

解决方案

Hi,

You could use REST API to add field to list view.

Use below endpoint to get default view first.

http://siteurl /_api/web/lists/getbytitle('MyList2')/Views

Sample code:

<script type="text/javascript" src="/_layouts/15/JS/jquery.min.js"></script>
    <script type="text/javascript">
        function AddFieldToView() {
            var endPointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('MyList2')/Views(guid'8a5b60ac-e937-435c-959a-0613cef931df')/ViewFields/AddViewField";
            var headers = {
                "accept": "application/json;odata=verbose",
                "content-Type": "application/json;odata=verbose",
                "X-RequestDigest": jQuery("#__REQUESTDIGEST").val()
            };
            var call = jQuery.ajax({
                url: endPointUrl,
                type: "POST",
                data: JSON.stringify({
                    //your field
                    'strField': 'F2'
                }),
                headers: headers
            });
            call.done(function (data, textStatus, jqXHR) {
                alert("View Updated Successfully");
            });
            call.fail(function (data, errorcode, errormessage) {
                alert(JSON.stringify(data));
            });
        }
    </script>

Referenced thread:

https://social.msdn.microsoft.com/Forums/office/en-US/820bc5b7-b636-4413-b327-7b00c33cc405/add-custom-field-to-default-view-using-rest?forum=appsforsharepoint

Best Regards,

Lee


这篇关于使用自定义内容类型和REST API中的列表视图创建SharePoint 2013列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆