private string LoadUri(DCTStorageObject folder, DocLibContext context) { if (folder is DCTFolder) { if ((folder as DCTFolder).IsRootFolder) { context.Load(context.BaseList.RootFolder); context.ExecuteQuery(); return(context.BaseList.RootFolder.ServerRelativeUrl); } } if (folder.Uri.IsNotEmpty()) { return(folder.Uri); } ListItem listItem = GetListItemById(folder.ID, context); (listItem == null).TrueThrow <TargetNotFoundException>("文件或文件夹(ID={0})不存在。", folder.ID); return(listItem["FileRef"].ToString()); }
public void DCMRemove(DCTStorageObject storageObject) { using (DocLibContext clientContext = new DocLibContext(ServiceHelper.GetDocumentLibraryName())) { string uri = LoadUri(storageObject, clientContext); if (storageObject is DCTFile) { ClientObject clientObject = (File)clientContext.Web.GetFileByServerRelativeUrl(uri); ((File)clientObject).Recycle(); } else if (storageObject is DCTFolder) { ClientObject clientObject = clientContext.Web.GetFolderByServerRelativeUrl(uri); ((Folder)clientObject).Recycle(); } clientContext.ExecuteQuery(); } }
private ListItem LoadItem(DCTStorageObject folder, DocLibContext context) { if (folder is DCTFolder) { if ((folder as DCTFolder).IsRootFolder) { context.Load(context.BaseList.RootFolder); context.ExecuteQuery(); return(null); } } if (folder.Uri.IsNotEmpty()) { return(GetListItemByUri(folder.Uri, context)); } return(GetListItemById(folder.ID, context)); }
public DCTFolder DCMGetParentFolder(DCTStorageObject storageObject) { using (DocLibContext clientContext = new DocLibContext(ServiceHelper.GetDocumentLibraryName())) { ListItem listItem = LoadItem(storageObject, clientContext); (listItem == null).TrueThrow <ArgumentException>("无法找到文件夹,传入的为根目录或文件、文件夹不存在。"); DCTFolder folder = null; clientContext.Load(clientContext.BaseList.RootFolder); clientContext.ExecuteQuery(); if (string.Compare(listItem.FieldValues["FileDirRef"].ToString(), clientContext.BaseList.RootFolder.ServerRelativeUrl, true) == 0) { folder = new DCTFolder() { ID = 0, IsRootFolder = true }; DCTConverterHelper.Convert(clientContext.BaseList.RootFolder, folder); } else { CamlQuery query = new CamlQuery(); query.ViewXml = Caml.SimpleView(Caml.Field("ServerUrl").Eq(Caml.Value("Text", listItem.FieldValues["FileDirRef"].ToString())), CamlBuilder.ViewType.RecursiveAll).ToCamlString(); ListItemCollection parentListItem = clientContext.BaseList.GetItems(query); clientContext.Load(parentListItem); clientContext.ExecuteQuery(); folder = new DCTFolder(); DCTConverterHelper.Convert(parentListItem[0], folder); } return(folder); } }
public DCTFolder DCMGetParentFolder(DCTStorageObject storageObject) { using (DocLibContext clientContext = new DocLibContext(ServiceHelper.GetDocumentLibraryName())) { ListItem listItem = LoadItem(storageObject, clientContext); (listItem == null).TrueThrow<ArgumentException>("无法找到文件夹,传入的为根目录或文件、文件夹不存在。"); DCTFolder folder = null; clientContext.Load(clientContext.BaseList.RootFolder); clientContext.ExecuteQuery(); if (string.Compare(listItem.FieldValues["FileDirRef"].ToString(), clientContext.BaseList.RootFolder.ServerRelativeUrl, true) == 0) { folder = new DCTFolder() { ID = 0, IsRootFolder = true }; DCTConverterHelper.Convert(clientContext.BaseList.RootFolder, folder); } else { CamlQuery query = new CamlQuery(); query.ViewXml = Caml.SimpleView(Caml.Field("ServerUrl").Eq(Caml.Value("Text", listItem.FieldValues["FileDirRef"].ToString())), CamlBuilder.ViewType.RecursiveAll).ToCamlString(); ListItemCollection parentListItem = clientContext.BaseList.GetItems(query); clientContext.Load(parentListItem); clientContext.ExecuteQuery(); folder = new DCTFolder(); DCTConverterHelper.Convert(parentListItem[0], folder); } return folder; } }