Полето Sharepoint не е инициализирано в C#

Пиша код, който ще премине през всеки елемент от списъка в списък с точки за споделяне и ще търси празно поле. Ако бъде намерено празно поле, лицето, отговорно за елемента от списъка, се уведомява по имейл.

Получавам грешка на ред val = oListItem[field.Title];, който гласи

Свойството или полето не е инициализирано. Не е поискано или заявката не е изпълнена. Може да се наложи изрично да бъде поискано.

Струва ми се, че съм инициализирал всичко преди този ред.

static void Main()
{
    ClientContext context    = new ClientContext("https://****");
    context.Credentials      = new NetworkCredential("****", "****");
    List oList               = context.Web.Lists.GetByTitle("TestBI");
    FieldCollection fieldcol = oList.Fields;

    context.Load(oList);
    context.Load(fieldcol);
    context.ExecuteQuery();

    ListItem oListItem = oList.GetItemById(1);
    object val = null;

    for (int i = 1; i <= 4; i++)
    {
        oListItem = oList.GetItemById(i);
        foreach (Field field in fieldcol)
        {
            val = oListItem[field.Title];
            if(val == null)
            {
                //Send e-mail
            }
        }
    }
    context.ExecuteQuery();
}

person user3158291    schedule 07.05.2014    source източник


Отговори (1)


Добре дошли в ада на SharePoint CSOM.

Вие сте заредили вашия списък и FieldCollection, но също така трябва да заредите всяко поле. Всъщност трябва да заредите всеки обект на SharePoint, от който възнамерявате да получите свойства.

for (int i = 1; i <= 4; i++)
{
    oListItem = oList.GetItemById(i);

    foreach (Field field in fieldcol)
    {
        context.Load(field);
        context.ExecuteQuery();
        val = oListItem[field.Title];
        if(val == null)
        {
            //Send e-mail
        }
    }
}
person Kilazur    schedule 07.05.2014
comment
Опитах това, но сега ми дава грешка при ExecuteQuery след зареждане на полето... Елементът не съществува. Може да е изтрито от друг потребител.. Някакви предложения? - person user3158291; 07.05.2014
comment
Това най-вероятно е съвсем друг проблем. Погледнете тук stackoverflow.com/questions/15790926/ и търсене на проблеми с разрешенията, за съжаление не работих много с тази страна на SharePoint. - person Kilazur; 07.05.2014
comment
Не съм сигурен дали това е проблемът. Акаунтът, който използвам, има пълен контрол върху сайта и списъка. - person user3158291; 07.05.2014
comment
Така че може би проблем с ID stackoverflow.com/questions/6672604/ или stackoverflow.com/questions/13184873/ ... Но наистина, не мога просто да продължа да търся в Google тези за вас ;p Още веднъж, изглежда като друг проблем, може би трябва да започнете нов въпрос. - person Kilazur; 07.05.2014
comment
Предишният ви съвет свърши работа. Прав си, вторият проблем беше с моя списък с точки за споделяне. Благодаря! - person user3158291; 07.05.2014