Список обновлений C# CSOM SP2013

ClientContext ctx = new ClientContext(Site);
ctx.Credentials = new NetworkCredential(userName, passWord, "dmz");               
List list = ctx.Web.Lists.GetByTitle(SpList);
ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items); // loading all the fields              
ctx.ExecuteQuery();
foreach (var item in items)
{
    if (((FieldUrlValue)(item["VideoSetExternalLink"])).Url.ToString() != VideoURL)
    {
        ((FieldUrlValue)(item["VideoSetExternalLink"])).Url = vp.VideoURL;
        item.Update(); 
    }
}
ctx.Load(items);
ctx.ExecuteQuery();

Работает нормально НЕТ ОШИБКИ. Но список не обновляется. Что я здесь делаю неправильно?


person Dayan Sivarajah    schedule 15.01.2015    source источник


Ответы (1)


Удалите последний ctx.Load (элементы), потому что вы не отправляете обновление в точку обмена, а перезагружаете значения элементов.

ClientContext ctx = new ClientContext(Site);
ctx.Credentials = new NetworkCredential(userName, passWord, "dmz");               
List list = ctx.Web.Lists.GetByTitle(SpList);
ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items); // loading all the fields              
ctx.ExecuteQuery();
foreach (var item in items)
{
    if (((FieldUrlValue)(item["VideoSetExternalLink"])).Url.ToString() != VideoURL)
    {
        ((FieldUrlValue)(item["VideoSetExternalLink"])).Url = vp.VideoURL;
        item.Update(); 
    }
}
ctx.ExecuteQuery();
person DeividKamui    schedule 16.01.2015
comment
Я исправил проблему, создав объект FieldUrlValue и присвоив значение, затем изменив объект, а затем вернув его элементу. например: FieldUrlValue va = ((FieldUrlValue)(item[VideoSetExternalLink])); va.Url = vp.VideoURL; элемент[VideoSetExternalLink] = va; Спасибо за вашу помощь. - person Dayan Sivarajah; 28.01.2015