我需要查询Sharepoint 2013文档库并检索列表中的字段值等于某个值的所有文档。我正在使用Sharepoint 2013 CSOM客户端(Microsoft.SharePoint.Client)。
我可以使用以下代码成功检索除文档URL之外的所有ListItem字段:
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
}
File属性似乎没有关于Document的任何数据,当我尝试访问其属性时出现错误。
我没有设置这个文档库,但它似乎是每个列表项的单个文档和大约十几个字段的标准,其中包含有关该文档的各种信息。如果我查看库/列表的字段列表,则文档/ URL甚至不会列为字段。我可以以某种方式从我正在检索的ListItem类中获取文档的URL吗?感谢。
答案 0 :(得分:2)
经过更多研究后,我发现FileRef字段/列具有可以构建为完整URL的相对URL:
string spDocUrl = spSiteUri.Scheme + "://" + spSiteUri.Host + listItem["FileRef"];