1

listdata.svc へのサービス参照を使用して、SharePoint リストを操作しています。会社のリストと人のリストがあります。

次のようにデータを操作できます。

HomeDataContext proxy = new HomeDataContext(new Uri(url + "/_vti_bin/listdata.svc"));
proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
PeopleItem person = proxy.People.Where(p => p.Name.Equals(myName)).First();
PeopleItem boss = proxy.People.Where(p => p.Name.Equals(bossName)).First();
CompaniesItem company= proxy.Companies.Where(c => c.ID.Equals(companyName)).First();
company.Employees.Add(person);
company.Boss = boss;
company.Name = "New Name";
proxy.UpdateObject(company);
proxy.SaveChanges();

このメソッドを使用すると、リスト項目の基本的なプロパティ (名前など) を編集できます。ただし、これを使用してルックアップ フィールドを更新することはできません (Boss や複数のルックアップの Employees など)。オブジェクト モデルでは、すべてが機能しているように見え、例外はスローされませんが、更新して保存した後、フィールドは SharePoint で単に空白になります。

4

2 に答える 2

1

上記の例は機能しません。単一値ルックアップ フィールドの場合は、id プロパティを設定する必要があります。

会社が上司を尊敬するためには、あなたが行く必要があります

company.BossId = Boss.Id;

上記の例では、Id プロパティを設定する必要があるルックアップ フィールドを使用して、sharepoint リストに変更を書き込みません。

于 2013-03-22T14:07:45.603 に答える
0

person アイテムがすでに sharepoint に存在していて、それを Company に追加したい場合は、次を使用できます。

HomeDataContext proxy = new HomeDataContext(new Uri(url + "/_vti_bin/listdata.svc"));
proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
PeopleItem person = proxy.People.Where(p => p.Name.Equals(myName)).First();
PeopleItem boss = proxy.People.Where(p => p.Name.Equals(bossName)).First();
CompaniesItem company= proxy.Companies.Where(c => c.ID.Equals(companyName)).First();
//company.Employees.Add(person);
company.Boss = boss;
company.Name = "New Name";
proxy.UpdateObject(company);
proxy.SaveChanges();
//To remove employee from company
proxy.DeleteLink(company, "Employee", person);
proxy.SaveChanges();
//To Add person as employee
proxy.AddLink(company,"Employee",person);
proxy.SaveChanges();

proxy.AddRelatedObject() メソッドを見て、新しい人物とリンクを同時に作成することもできます。これらの方法の詳細については、http: //msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.aspxを参照してください。

于 2013-02-01T03:28:37.967 に答える