2012-09-18 28 views
1

我正在使用對listdata.svc的服務引用來操縱SharePoint列表。我有一份公司名單和一份人名單。在C中使用REST更新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(); 

用這種方法我可以編輯我的listItems中(如名稱)的基本屬性。但是,我不能使用它來更新查找字段(如Boss或多個查找員工)。在對象模型中,它似乎都可以工作,並且不會引發異常,但是在更新和保存之後,這些字段在SharePoint中只是空白的。

回答

0

如果人產品已經出現在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(); 
//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()方法來創建新的人,鏈接simultanously。有關這些方法的更多信息,請參閱: http://msdn.microsoft.com/en-us/library/system.data.services.client.dataservicecontext.aspx

1

上述示例不起作用。對於單個值查找字段,您需要設置id屬性。

爲公司看看了老闆,你需要去

company.BossId = boss.Id;

上述示例不會將更改寫入sharepoint列表,並且需要使用查找字段來設置Id屬性。

相關問題