3

I need to query a Sharepoint 2013 Document Library and retrieve all documents where a field value in the list equals a certain value. I am using the Sharepoint 2013 CSOM client for this (Microsoft.SharePoint.Client).

I can successfully retrieve all of the ListItem fields except the URL for the document with the following code:

ClientContext spContext = new ClientContext(spDocLibSite);
List cjList = spContext.Web.Lists.GetByTitle(spDocLibTitle);

CamlQuery listItemQuery = CamlQuery.CreateAllItemsQuery(100);
listItemQuery.ViewXml = "ViewXml that limits ListItems returned based on a field val";
ListItemCollection docItems = cjList.GetItems(listItemQuery);

spContext.Load(docItems);
spContext.ExecuteQuery();

foreach (ListItem listItem in docItems)
{
  Console.WriteLine(listItem["Title"]);   //  Works correctly with all fields except URL

  listItem.File.Name or Title;  // Does not work, get field not initialized error
}

The File property doesn't seem to have any data about the Document, I get errors when I try to access its properties.

I didn't set up this document library, but it appears to be standard with a single document for each list item and about a dozen fields with various information about the document. If I look at the field list of the Library/List, the Document/URL isn't even listed as a field. Can I somehow get the URL of the document from the ListItem class that I'm already retrieving? Thanks.

1 Answer 1

6

After more research I found the FileRef field/column that has a relative URL that I can build into a full URL:

string spDocUrl = spSiteUri.Scheme + "://" + spSiteUri.Host + listItem["FileRef"];    
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.