Клиентская объектная модель Sharepoint: загрузка элементов из списка с включенным File.ServerRelativeUrl - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь загрузить File.ServerRelativeUrl при загрузке элементов из списка, но не повезло.

Попробуйте этот код:

public IEnumerable<ListItem> EnumListItems(List list, Folder folder)
{
    if (folder == null)
        return null;

    var camlQuery = new CamlQuery
    {
        //  ViewXml = "<View Scope='RecursiveAll'></View>",
        FolderServerRelativeUrl = folder.ServerRelativeUrl//"Relative path to folder '); -> Add relative Path for your Folder. for e.g.  "/Lists/ListName/FolderName"
    };

    var collListItem = list.GetItems(camlQuery);

    var result = Context.LoadQuery
    (
        collListItem.Include
        (
            item => item,
            item => item.File,
            item => item.File.ServerRelativeUrl
            //item => item["Body"]
        )
    );

    Context.ExecuteQuery();
    return result;
}

Но не повезло, при доступе к ServerRelativeUrl я получаю:

'item.File.ServerRelativeUrl' сгенерировал исключение типа 'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException'

Ответы [ 2 ]

2 голосов
/ 08 декабря 2014

Надеюсь, это может кому-то помочь.Итерируя элементы списка для библиотеки документов, вы можете получить относительный URL-адрес сервера файла с приведенным ниже примером кода:

var fileRef = Convert.ToString(listItem["FileRef"]);
0 голосов
/ 31 января 2012

И ответ таков: список - это не список документов, тогда Файл всегда пуст и не инициализирован.

Здесь приведен пример получения относительного URL-адреса присоединенных элементов (и того, что мне нужно, в конце)

string.Format(
  @"{0}/Attachments/{1}",
  list.RootFolder.ServerRelativeUrl,
  item.Id
)

И list.RootFolder.ServerRelativeUrl, загруженный этим

var result = Context.LoadQuery
        (
            collList.Include
            (
                list => list.Title,
                list => list.Id,                    
                list => list.RootFolder,
                list => list.RootFolder.ServerRelativeUrl,
                list => list.Fields
            )
        );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...