2016-10-13 5 views
1

たとえば、私はリスト呼び出し "買い物リスト"を持っています、それは2つの列を持っています。 第1列の種類が「人」または「グループ」(複数の人を許可)の場合、列名は「得意先」です。 2番目の列の種類は文字列です。SharePoint 2010 REST API、 "USERS"列を含むリストにコンテンツを投稿する

私は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オブジェクトが文字列化されていると私は成功したお客様に入力せずに同じリストに新しい項目を追加したとして、ポスト要求が正しく送信されていることを確認することができます。カラム。

複数のユーザー列を使用してSharePoint 2010 REST APIにコンテンツを投稿するための正しい形式は何ですか? SharePoint 2010のRESTインターフェイスの場合

答えて

1

多値ユーザフィールドの適切なペイロードは、以下のようになります

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

ここ

  • MultiUserFieldName - ユーザーフィールド名
  • WebUrl - アブソリュートウェブURL
  • UserId - ユーザーID

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

そのための素晴らしい、おかげでたくさんの作品。実際に私はこの答えのために一日中それをgoogledしました。 – Sporule

関連する問題