我需要一些帮助来整理一些语法,以便从应用程序更新sharepoint中的列表项。以下是有关情况的简要说明:
此sp网站中有两个列表。一个列表是产品列表,第二个列表是定价。然而,这些列表的设置方式是1对多方案。一种产品可以有很多定价记录。然后,该产品有一个列,它是一个支持多个值的查找字段。
使用REST和oData我现在可以轻松地查询和获取定价信息,但我的问题是当我需要更新产品记录以增加价格时。
使用常规查找字段我通常只设置对象的ID属性,然后调用该列表的update和savechanges方法。由于定价列支持多个记录,因此无需设置ID,该字段是各种类型的数组。添加定价对象(列表项)以及更新和保存更改实际上并不保存。没有错误被抛出但是当查看列表时它实际上并没有保存。
如何为我的产品添加价格查询?
我写了一个小方法来查询每个价格,并将其初始价格添加到下面的产品中进行测试:
InventoryCatalogDataContext dc = new InventoryCatalogDataContext(_pushinTinSvc);
dc.Credentials = CredentialCache.DefaultCredentials;
List<PricingItem> pricing = (from q in dc.Pricing
select q).ToList<PricingItem>();
foreach (PricingItem price in pricing)
{
var query = (DataServiceQuery<ProductsItem>)
dc.Products
.Expand("Pricing")
.Where(p => p.Id.Equals(price.StockCodeId));
List<ProductsItem> prods = query.ToList<ProductsItem>();
ProductsItem product = prods[0];
product.Pricing.Add(price);
dc.UpdateObject(product);
}
try
{
dc.SaveChanges();
}
catch (Exception ex)
{
string stopHere = ex.Message;
}
我不确定我做错了什么或者这是一个错误。如果我在SaveChanges之后检查项目,该项目仍然附加了定价项目查找,显示计数为1.在代码块结束时,如果我重新查询产品,那么它甚至还有定价附加。但是一旦方法完成并返回到UI,就不再附加定价,当您查看sharepoint中的列表时,字段为空,但版本确实增加了。所以我有点失落......