0
我想要使用CSOM爲1個特定文件檢索1列,這些可以位於任何位置,因此可以在任何文件夾類型的內容類型(包括文檔集)中找到。caml查詢來查詢包含文檔集內的文件
因此,我可以先檢查,然後...如果結果= 0,然後遍歷文件夾,看看排隊的父母是否是文檔集...然後再進行檢查,但我想知道如果沒有查詢了更加便利的方式
下面的代碼工作,但「無論是在lib和內容類型中,如文檔,只要它是一個文件中設置」 ....如果該文件將無法正常工作在文件集內。
var baseUrl = uri.GetLeftPart(UriPartial.Authority);
var fileServerRelativeUrl = uri.ToString().Replace(baseUrl, string.Empty);
logger.Log(LogLevel.Debug, " fileserverrelativeurl is " + fileServerRelativeUrl.ToString());
var file = context.Web.GetFileByServerRelativeUrl(fileServerRelativeUrl);
List list = file.ListItemAllFields.ParentList;
context.Load(list);
context.ExecuteQuery();
logger.Log(LogLevel.Debug, " list is loaded: " + list.Title.ToString());
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml =
"<View><Query><Where><Eq><FieldRef Name='" + fieldRefName + "'/>" +
"<Value Type='Text'>" + fieldRefValue + "</Value></Eq></Where>" +
"<RowLimit>1</RowLimit></Query></View>";
logger.Log(LogLevel.Debug, " caml is " + camlQuery.ViewXml.ToString());
ListItemCollection listItems = list.GetItems(camlQuery);
context.Load(listItems);
try
{
context.ExecuteQuery();
}
catch
{
logger.Log(LogLevel.Debug, " caml exec FAILED !! ");
// e.g. : no access or the listname as incorrectly deduced
throw;
}
logger.Log(LogLevel.Debug, " items found: " + listItems.Count.ToString());
// and now retrieve the items needed
if (listItems.Count == 1)
{
logger.Log(LogLevel.Debug, " listitem found ");
ListItem item = listItems[0];
foreach (string column in columns)
{
if (item.FieldValues.ContainsKey(column))
{
logger.Log(LogLevel.Debug, " column found: " + column);
if (item[column] is Dictionary<string, object>)
{
Dictionary<string, object> clientTaxonomyObject = item[column] as
Dictionary<string, object>;
if (clientTaxonomyObject.ContainsKey("_ObjectType_") &&
clientTaxonomyObject.ContainsKey("TermGuid") &&
clientTaxonomyObject.ContainsKey("Label") &&
clientTaxonomyObject["_ObjectType_"].Equals("SP.Taxonomy.TaxonomyFieldValue"))
{
values.Add(column, clientTaxonomyObject["Label"].ToString());
}
else
{
values.Add(column, item[column].ToString());
}
}
else
{
values.Add(column, "");
}
}
}
}
}
裁判
- https://social.technet.microsoft.com/Forums/sharepoint/en-US/a83259c6-3667-47f8-83c9-da37aa1b6ead/caml-query-and-document-set
- Programmatically access files in Document set in sharepoint using Javascript
UPDATE
啊!更簡單的是,不需要caml查詢,只需要file.listitemallfields,然後只是拋棄該字段的分類標籤。解決:)