• Sharepoint中有关文件夹的操作


    转:http://www.cnblogs.com/lzqs/p/3475115.html

    Sharepoint中有关文件夹的操作

    1、GetItemsWithUniquePermissions根据返回数量和是否返回文件夹获取唯一权限的列表项集合

    对于SharePoint对象模型中SPList的GetItemsWithUniquePermissions方法,主要功能是返回不从列表继承安全权限,但具有唯一权限的列表项集合。其中有一个是重载的方法,具有两个参数,定义如下:

    view source

    print?

    public Collection<SPListItemInfo> GetItemsWithUniquePermissions(int maxItemToReturn, bool folderOnly);

    此方法中的两种参数含义如下:

    A)、maxItemToReturn是一个int类型的参数,表示返回具有唯一权限列表项集合的最大数量。

    B)、folderOnly是一个布尔bool类型的参数,表示是否只返回具有唯一权限的文件夹类型的列表项。当folderOnly=true时表法只返回文件夹类型的列表项,而当folderOnly=false时列表项和文件夹都返回。

    2、使用SPQuery对象获取SharePoint列表或库指定文件夹SPFolder下的项目

    SharePoint列表或库是一些可以存储数据和文档的容器,默认是可以根目录下添加内容的。也就是只要创建了一个列表或库,添加的内容都是存储在根文件夹下的,默认列表是没有开启文件夹功能,而库是开启了文件夹功能。

    view source

    print?

    复制代码
    01/// <summary>  
    
    02 /// 获取指定文件夹下的所有列表项  
    
    03 /// </summary>  
    
    04 /// <param name="folder"></param>  
    
    05 /// <returns></returns>  
    
    06 protected SPListItemCollection GetItemsByFolder(string folder)  
    
    07 {  
    
    08     SPListItemCollection itemColl = null;  
    
    09     SPWeb web = SPContext.Current.Web;  
    
    10     SPList list = web.Lists.TryGetList("DemoList");  
    
    11     SPQuery query = new SPQuery();  
    
    12     query.Folder = list.RootFolder.SubFolders[folder];  
    
    13     itemColl = list.GetItems(query);  
    
    14     return itemColl;  
    
    15 }
    复制代码

    3、对象模型启用或禁用列表的文件夹功能

    复制代码
    /// <summary>  
    
    02 /// 设置列表的文件夹功能  
    
    03 /// </summary>  
    
    04 protected void SetFolders()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists.TryGetList("DemoList");  
    
    08     //开启文件夹功能  
    
    09     list.EnableFolderCreation = true;  
    
    10     list.Update();  
    
    11 }
    复制代码

    4、使用RootFolder获取列表或库的根文件夹

    复制代码
    01 /// <summary>  
    
    02 /// 获取列表的根文件夹  
    
    03 /// </summary>  
    
    04 protected void GetListRootFolder()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists.TryGetList("项目");  
    
    08     //RootFolder表示根文件夹  
    
    09     SPFolder rootFolder = list.RootFolder;  
    
    10     this.Label1.Text = "根文件夹是:" + rootFolder.Name;  
    
    11 } 
    
    #RootFolder  #根文件夹  #列表  #库
    复制代码

    5、获取列表的所有文件夹名称,包括各层次的所有子文件夹的名称

    复制代码
    01 /// <summary>  
    
    02 /// 获取列表的所有文件夹(不分层次)  
    
    03 /// </summary>  
    
    04 protected void GetListAllFolders()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists["项目"];  
    
    08     //在列表中文件夹也看做列表项  
    
    09     SPListItemCollection fColl = list.Folders;  
    
    10     foreach (SPListItem item in fColl)  
    
    11     {  
    
    12         this.Label1.Text += item.Name + "<br/>";  
    
    13     }  
    
    14 }
    复制代码

    6、对象模型获取SharePoint 2010指定文件夹下的所有子文件夹

    复制代码
    01 /// <summary>  
    
    02 /// 根据文件夹名称获取所有子文件夹  
    
    03 /// </summary>  
    
    04 protected void GetListSubFolders()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists.TryGetList("项目");  
    
    08     //得到所有文件夹  
    
    09     SPListItemCollection fColl = list.Folders;  
    
    10     foreach (SPListItem item in fColl)  
    
    11     {  
    
    12         if (item.Name.Equals("2015年"))  
    
    13         {  
    
    14             //将SPListItem转换为SPFolder对象,此时SPListItem对象必须是通过Foldrs得到的。  
    
    15             SPFolder folder = item.Folder;  
    
    16             //获取所有子文件夹  
    
    17             SPFolderCollection subfColl = folder.SubFolders;  
    
    18             foreach (SPFolder f in subfColl)  
    
    19             {  
    
    20                 this.Label1.Text += f.Name + "<br/>"; ;  
    
    21             }  
    
    22         }  
    
    23     }  
    
    24 } 
    
    #文件夹  #子文件夹  #Folders  #SubFolders
    复制代码

    7、对象模型获取SharePoint 2010列表所有项目并忽略文件夹

    复制代码
    01 /// <summary>  
    
    02 /// 获取列表中所有的项目,包括文件夹内的项目  
    
    03 /// </summary>  
    
    04 protected void GetContainsFolderOfAllItem()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists.TryGetList("项目");  
    
    08     //获取所有字段所有文件夹内的项目  
    
    09     SPListItemCollection itemColl1 = list.Items;  
    
    10     SPQuery query = new SPQuery();  
    
    11     //指定返回的字段  
    
    12     query.ViewFields = "<FieldRef Name='Title'/><FieldRef Name='Created'/>";  
    
    13     //忽略文件夹  
    
    14     query.ViewAttributes = "Scope="Recursive"";  
    
    15     SPListItemCollection itemColl2 = list.GetItems(query);  
    
    16     this.gV.DataSource = itemColl2.GetDataTable();  
    
    17     this.gV.DataBind();  
    
    18 }
    复制代码

    8、使用SPQuery对象查询所有列表项但不包括文件夹

    复制代码
    if (!string.IsNullOrEmpty(listName))  
    
    02 {  
    
    03     SPWeb web = SPContext.Current.Web;  
    
    04     SPList list = web.Lists[listName];  
    
    05     //获取列表的根文件夹  
    
    06     SPFolder rootFolder = list.RootFolder;  
    
    07     this.lbl.Text += "根文件夹为:" + rootFolder.Name + "<br/>";  
    
    08    
    
    09     //使用SPQuery得到列表项  
    
    10     SPQuery query = new SPQuery();  
    
    11     query.ViewAttributes = "Scope="Recursive"";  
    
    12     SPListItemCollection queryFolderColl = list.GetItems(query);  
    
    13     foreach (SPListItem item in queryFolderColl)  
    
    14     {  
    
    15         this.lbl.Text += "Name:" + item.Name + ",DisplayName:" + item.DisplayName + "<br/><br/>";  
    
    16     }  
    
    17 } 
    
    在SharePoint的列表中,有时候会将文件夹和列表项同时存在,但在使用对象模型操作时,总会用到SPQuery对象,此对象可以根据字段、查询条件返回一个结果集,但如果存在文件夹,则就要使用ViewAttributes属性来设置而忽略文件夹。
    复制代码

    9、SharePoint 2010列表文件夹SPFolder的相关操作

    复制代码
    if (item.Name.Equals("Task1"))  
    
    02 {  
    
    03     //将SPListItem转换为SPFolder对象,此时SPListItem对象必须是通过Foldrs得到的。  
    
    04     SPFolder f = item.Folder;  
    
    05     //获取所有的子文件夹  
    
    06     SPFolderCollection fColl = f.SubFolders;  
    
    07     foreach (SPFolder fx in fColl)  
    
    08     {  
    
    09         this.lbl.Text += "Task1的子文件夹有:" + fx.Name + "<br/><br/>";  
    
    10     }  
    
    11 } 
    
    在SharePoint列表中,即可以创建列表项也可以创建文件夹,新创建的列表是不支持新建文件夹,要通过列表设置的“高级设置”页面配置使用列表支持文件夹的相关操作。在列表中,文件夹也可以被看作是列表项SPListItem,不过在做一些文件夹的特殊操作时,还必须将SPListItem转换为SPFolder对象。
    复制代码

    10、获取列表根文件夹下的所有项目,文件夹内的项目除外

    复制代码
    /// <summary>  
    
    02 /// 获取列表根文件夹下的项目,但不包括文件夹内的项目。  
    
    03 /// </summary>  
    
    04 protected void GetRootFolderAllItem()  
    
    05 {  
    
    06     SPWeb web = SPContext.Current.Web;  
    
    07     SPList list = web.Lists["项目"];  
    
    08     //获取根文件夹  
    
    09     SPFolder rootFolder = list.RootFolder;  
    
    10     SPQuery query = new SPQuery();  
    
    11     query.Folder = rootFolder;  
    
    12     //获取所有的列表项,同时包括子文件夹内的列表项,但并不会获取文件夹。  
    
    13     SPListItemCollection itemColl = list.Items;  
    
    14     //获取根文件夹下的一级内容,包括文件夹。  
    
    15     //SharePoint的文件夹类型也是SPListItem。  
    
    16     SPListItemCollection rootItemColl = list.GetItems(query);  
    
    17     foreach (SPListItem item in rootItemColl)  
    
    18     {  
    
    19         //用来区分文件夹和列表项  
    
    20         if (!item.ContentType.Name.Equals("文件夹"))  
    
    21         {  
    
    22             this.Label1.Text += "名称:" + item.DisplayName + "<br/><br/>";  
    
    23         }  
    
    24     }  
    
    25 } 
    
    #根文件夹  #列表  #项目  #文件夹
    复制代码

    11、获取指定文件夹下的所有列表项,包括子文件夹内的项目

    复制代码
    /// <summary>  
    
    02 /// 获取指定文件夹下的所有项目  
    
    03 /// </summary>  
    
    04 /// <param name="listName"></param>  
    
    05 protected void GetSpecifiedFolderAllItem(string listName)  
    
    06 {  
    
    07     SPWeb web = SPContext.Current.Web;  
    
    08     SPList list = web.Lists[listName];  
    
    09     SPQuery query = new SPQuery();  
    
    10     //获取指定文件夹的SPFolder对象  
    
    11     query.Folder = list.RootFolder.SubFolders["Task1"];  
    
    12     //query.ViewAttributes = "Scope="Recursive"";  
    
    13     SPListItemCollection itemColl = list.GetItems(query);  
    
    14     this.gV.DataSource = itemColl.GetDataTable();  
    
    15     this.gV.DataBind();  
    
    16 } 
    
    #文件夹  #列表项  #项目  #子文件夹
    复制代码

    12、获取SharePoint 2010文档库的文件夹及子文件夹

    在SharePoint中,文档库是基于列表的特殊情况,也就说文档库其实也是列表,只不过它增加了一些对于文件的存储和操作。可以将获取的文档库列表SPList转换为SPDocumentLibrary。得到了SPDocumentLibrary对象之后,就可以执行与文件紧密相关的操作了。
    
    SharePoint的文档库与列表都可以创建文件夹,默认情况列表的文件夹功能是禁用的,但文档库的文件夹功能是可以使用的。
    
    #SPDocumentLibrary  #文档库  #文件夹  #子文件夹

    13、在SharePoint列表的根文件夹下添加子文件夹

    复制代码
    /// <summary>  
    
    02 /// 向列表根目录添加文件夹  
    
    03 /// </summary>  
    
    04 /// <param name="listName"></param>  
    
    05 protected void AddFolderToRoot(string listName)  
    
    06 {  
    
    07     SPWeb web = SPContext.Current.Web;  
    
    08     web.AllowUnsafeUpdates = true;  
    
    09     SPList list = web.Lists[listName];  
    
    10     //允许列表添加文件夹  
    
    11     list.EnableFolderCreation = true;  
    
    12     SPListItem item = list.Items.Add("", SPFileSystemObjectType.Folder, "Task5");  
    
    13     item.Update();  
    
    14     web.AllowUnsafeUpdates = false;  
    
    15 }
    复制代码

    14、在列表中指定的文件夹下创建子文件夹

    复制代码
    /// <summary>  
    
    02 /// 添加子文件夹到指定的文件夹下  
    
    03 /// </summary>  
    
    04 /// <param name="listName"></param>  
    
    05 protected void AddFolderToSpecifiedFolder(string listName)  
    
    06 {  
    
    07     SPWeb web = SPContext.Current.Web;  
    
    08     SPList list = web.Lists[listName];  
    
    09     web.AllowUnsafeUpdates = true;  
    
    10     list.EnableFolderCreation = true;  
    
    11     //将Task5001添加添加到Task5文件夹下  
    
    12     SPListItem item = list.Items.Add("/Lists/Tasks/Task5", SPFileSystemObjectType.Folder, " Task5001");  
    
    13     item.Update();  
    
    14 } 
    
    #列表  #文件夹  #子文件夹  #Folder
    复制代码

    15、在SharePoint 2010列表中删除指定的文件夹

    使用页面方式删除SharePoint列表的文件夹跟删除列表项没有任何区别,而在使用对象模型删除文件夹要比删除列表项多出一种方法。这是因为列表对象SPList有一个Folders属性,通过此属性的GetItemById()方法可以得到文件夹项。而使用此方法是不能得到列表项的。
    
    #列表  #文件夹  #SPFolder

    16、更新SharePoint 2010列表的文件夹名称

    SharePoint列表和库的文件夹既然能创建,则肯定也可以更新,文件夹使用页面更新非常的简单,只需要点击几下即可修改完成。但是要使用SharePoint对象模型更新文件夹,则首先要得到SPListItem对象,然后再将SPListItem转换为SPFolder对象,比创建文件夹要复杂一些。
    
    在SharePoint中更新列表或库的文件夹名称时,必须保证使用SPList. Folders获取到SPListItem对象。

    17、获取SharePoint网站下文件夹SPFolder对象的相关操作

    在SharePoint的网站结构中,可以虚拟的看作是文件系统,可以创建文件夹及子文件夹,通过SharePoint Designer工具就可以看的一清二楚,但是也可以通过对象模型获取根文件夹及子文件夹的结构。SPWeb对象有一个Folders属性,可以获取此网站下所有一级文件夹的集合。
    
    #网站  #文件夹  #SPFolder

    18、使用PowerShell命令创建SharePoint 2010文档库及文件夹

    复制代码
    # Add List  
    
    2 Function AddList($web,$listName,$listDescription,  
    
    3 $listTemplate){  
    
    4 DeleteList $web $listName 
    
    5 Write-host ".............Starting create " $listName ",please waiting............."  
    
    6 $web.Lists.Add($listName,$listDescription,$listTemplate)  
    
    7 Write-host ".............. " $listName " already is created......................." -foregroundcolor green  
    
    8 }
    复制代码

    19、在文档库视图中设置通过文件夹查看还是一次查看所有项目

    在SharePoint 2010文档库视图中,当此文档库有文件夹时,可以以两种方式显示文档库中的文档,一种是只显示文件夹,文件夹中再显示文档。另一种是不显示文件夹,而是把所有文件夹中的文档合并在一起显示在文档库中而不显示文件夹。
    
    #文档库  #视图  #文件夹

    20、开启或关闭SharePoint 2010列表的新建文件夹功能

    SharePoint 2010的列表和库都是可以创建文件夹的,SharePoint 2010的文件夹功能跟Windows操作系统的文件夹功能基本上差不多,都是用来将不同的内容区分开来存储。
    
    默认情况下,列表的文件夹功能是处于关闭状态的,但库的文件夹功能是处于开启状态的。
    
    #文件夹

    以上都是出自Sharepoint资源网上内容,感觉不错,借此收集起来供以后学习和使用。

  • 相关阅读:
    每周总结8.18
    每周总结7.28
    每周总结8.25
    每周总结7.21
    每周总结8.11
    每周总结8.4
    大道至简 读后感
    递归进行回文的判断
    课后作业1
    GoodBlogs Websites
  • 原文地址:https://www.cnblogs.com/jackljf/p/4768654.html
Copyright © 2020-2023  润新知