2016-10-13 4 views
1

Например, у меня есть список «список покупок», он имеет 2 столбца. 1-й тип столбца - это люди или группы (разрешено нескольким людям), имя столбца - «клиенты». Второй тип столбца - строка.API REST SharePoint 2010, Опубликовать контент в список, содержащий колонку «ПОЛЬЗОВАТЕЛИ»

Я могу использовать ajax для отправки информации в обычный список SharePoint, но просто не для этого списка покупок. Я знаю, как форматировать данные для одного столбца пользователя, но не для несколько колонки пользователей, один столбец пользователя что-то вроде: Имя столбца клиент, формат данных должно быть:

item.CustomerID=1;

Я пробовал много способов форматирования данных, но он все тот же. Сервер возвращает 500 без какой-либо полезной информации. Пример форматов ниже:

item.Customers = [1,2,3] //1,2,3 is the user id in SharePoint. 
 
item.CustomersID=[1,2,3] //1,2,3 is the user id in SharePoint. 
 
item.Customers=[{UserId:1},{UserId:2},{UserId:3}]

Я могу подтвердить, что JavaScript Object был stringify и запрос на сообщение правильно отправлено, как я успешно добавили новые элементы в том же списке, не заполняя Заказчиков Колонна.

Может кто-нибудь, пожалуйста, сообщите мне, какой правильный формат для размещения контента в REST API SharePoint 2010 с несколькими столбцами пользователя.

ответ

1

В случае SharePoint 2010 REST интерфейса собственно полезная нагрузка для многозначного поля пользователя должна выглядеть следующим образом:

'<MultiUserFieldName>': [ 
    { 
     __metadata: { 
      "uri": "<WebUrl>/_vti_bin/listdata.svc/UserInformationList(<UserId>)" 
     } 
    } 
] 

где

  • MultiUserFieldName - имя пользователя поля
  • WebUrl - абсолютная web url
  • UserId - идентификатор пользователя

пример JavaScript

var webUrl = "http://contoso.intranet.com"; 
var listName = "ShoppingCart"; 
var properties = { 
    'Title': 'Item #123', 
    'Customers': createPayloadForMultiUserField(webUrl,[1,2,3]) 
}; 


createListItem(webUrl,listName,properties) 
.done(function(data){ 
    console.log('Item ' + data.d.Title + ' has been created'); 
}) 
.fail(function(error){ 
    console.log(JSON.stringify(error)); 
}); 

где

function createListItem(webUrl,listName, itemProperties) { 
    return $.ajax({ 
     url: webUrl + "/_vti_bin/listdata.svc/" + listName, 
     type: "POST", 
     processData: false, 
     contentType: "application/json;odata=verbose", 
     data: JSON.stringify(itemProperties), 
     headers: { 
      "Accept": "application/json;odata=verbose" 
     } 
    }); 
} 


function createPayloadForMultiUserField(webUrl,userIds) 
{ 
    return userIds.map(function(id){ 
     return { 
      __metadata: { 
       "uri": webUrl + "/_vti_bin/listdata.svc/UserInformationList(" + id + ")" 
      } 
     } 
    }); 
} 
+1

Прекрасно работает, спасибо большое за это. На самом деле, я на это весь день пробовал в этом вопросе. – Sporule

 Смежные вопросы

  • Нет связанных вопросов^_^