【问题标题】:Creating a SharePoint 2013 Discussion Item Using RESTful API使用 RESTful API 创建 SharePoint 2013 讨论项
【发布时间】:2014-09-22 21:06:19
【问题描述】:

我们有一个名为“团队讨论”的讨论板 我正在尝试使用 SharePoint 2013 Restful API 创建一个讨论区项目。 我可以使用以下方法成功创建讨论区项目,

我发帖的网址(网址包含“团队讨论”讨论列表的 guid

http://OurDomain/sites/99812/40242/23653/_api/Web/Lists(guid'c29cef95-6450-4433-8ac8-72d46c9a7fe7')/Items

标题

接受:应用程序/json;odata=verbose X-RequestDigest: 0x98B316961381BB37DD23B8A1F62EAF853584F74F4307744280198682E0B76AB9446D4480FD01F1E27C0AC9DD412BACA2992F0542D49CD1B009CC220140DBDCD:1:31 七月 内容类型:application/json;odata=verbose

身体

{ '__metadata': { 'type': 'SP.Data.Team_x0020_DiscussionItem' }, 'Title': '我的团队讨论项目' }

但是,以编程方式创建的讨论区项目与手动创建的项目看起来不同。当我进入讨论项目时,标题显示为“团队讨论:47_.000”

似乎我没有为 SharePoint 设置正确的元数据以正确创建它。 我什至尝试创建一个列表资源而不是列表项并将 BaseTemplate 设置为 108 并将 BaseType 设置为值 3。它仍然会创建具有相同问题的讨论项。 我还发现存在类似问题,除非您使用 SPUtility.CreateNewDiscussion 使用服务器 API 创建讨论项。

对于如何在使用 Resftul API 时更正此问题的任何帮助,我们将不胜感激

问候

女娲

【问题讨论】:

  • 嘿嗨..hv你得到解决方案得到所有问题的答复.??

标签: rest sharepoint-2013 listitem


【解决方案1】:

这是因为您正在通过SP.ListItemCollection 资源端点创建讨论项。讨论项实际上是SP.Folder 资源,在这种情况下,SP.Folder.Name 被分配给值<Id>.000

以下示例演示了如何正确创建讨论项:

var listTitle = "Discussions";
var webUrl = _spPageContextInfo.webAbsoluteUrl;
var payload = {
   '__metadata': { "type": "SP.Data.DiscussionsListItem" },  
   'Title': "Discussion 123",  
   'FileSystemObjectType': 1
};


createNewDiscussion(webUrl,listTitle,payload)
.done(function(item)
{
    console.log('Discussion has been created');
})
.fail(function(error){
    console.log(JSON.stringify(error));
});

在哪里

function executeJson(options) 
{
    var headers = options.headers || {};
    var method = options.method || "GET";
    headers["Accept"] = "application/json;odata=verbose";
    if(options.method == "POST") {
        headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
    }   

    var ajaxOptions = 
    {       
       url: options.url,   
       type: method,  
       contentType: "application/json;odata=verbose",
       headers: headers
    };
    if("data" in options) {
      ajaxOptions.data = JSON.stringify(options.data);
    }  

    return $.ajax(ajaxOptions);
}


function createListItem(webUrl,listTitle,payload){
    var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items";
    return executeJson({
        "url" :url,
        "method": 'POST',
        "data": payload
    });
}


function fixDiscussionFolder(webUrl,listTitle,payload){
    var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/items(" + payload.Id + ")";
    var payload = {
       '__metadata': payload.__metadata,  
       'FileLeafRef' : payload.Title,
    };
    return executeJson({
        'url' :url,
        'headers': {
            'X-HTTP-Method': 'MERGE',
            'If-Match': '*'
        },
        'method': "POST",
        'data': payload
    });
}

【讨论】:

  • 虽然这似乎有效(回复显示在父帖子的讨论线程中)它没有在回复上设置 ParentItemID 属性,它仍然是 null 这打破了一些讨论的特点。见这篇文章:REST api support for discussion list
猜你喜欢
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多