簡體   English   中英

在C#中使用REST更新SharePoint列表項的查找字段

[英]Updating lookup fields of SharePoint list items using REST in C#

我正在使用對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();

使用這種方法,我可以編輯列表項的基本屬性(例如Name)。 但是,我不能用它來更新查詢字段(例如Boss或多查詢雇員)。 在對象模型中,這一切似乎都可以正常工作,並且不會引發任何異常,但是在更新和保存后,SharePoint中的字段只是空白。

上面的例子是行不通的。 對於單個值查找字段,您需要設置id屬性。

要讓公司去看老板,您需要去

company.BossId = boss.Id;

上面的示例不會將更改寫入共享點列表,而需要設置Id屬性的查找字段。

如果人員項目已經存在於共享點中,而您只想將其添加到公司中,則可以使用:

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/zh-cn/library/system.data.services.client.dataservicecontext.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM