2

我需要一些帮助来整理一些语法,以便从应用程序更新到 sharepoint 中的列表项。以下是有关情况的简要说明:

此 sp 站点中有两个列表。一个列表是产品列表,第二个列表是定价。然而,这些列表的设置方式是一对多的方案。一种产品可以有多个定价记录。然后,该产品有一个针对它的列,该列是一个支持多个值的查找字段。

使用 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 中的列表时,这些字段为空,但版本确实会增加。所以我有点失落...

4

0 回答 0