可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

 

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

分类: SharePoint
 

可视化webpart基础开发——TreeView控件读取文档库中的所有文件夹和文件(递归方法读取)

1、在部署的sharepoint网站中新建一个名为“测试文档库”的文档库,并添加各级的子文件夹和子文件,用于测试

2、在VS2010中新建空白sharepoint项目

3、创建可视化web部件

在TreeViewTestUserControl.ascx中添加TreeView控件,ID为“TreeView1”

在TreeViewTestUserControl.ascx.cs源文件夹添加如下实现代码

全部代码:

[csharp] view plaincopy
 
  1. using System;  
  2. using System.Web.UI;  
  3. using System.Web.UI.WebControls;  
  4. using System.Web.UI.WebControls.WebParts;  
  5.   
  6. //加入引用  
  7. using Microsoft.SharePoint;  
  8.   
  9.   
  10. namespace TreeViewProject.TreeViewTest  
  11. {  
  12.     public partial class TreeViewTestUserControl : UserControl  
  13.     {  
  14.         protected void Page_Load(object sender, EventArgs e)  
  15.         {  
  16.             if (!IsPostBack)  
  17.             {  
  18.                 BindDoclib();  
  19.             }  
  20.         }  
  21.   
  22.         /// <summary>  
  23.         /// 绑定文档库  
  24.         /// </summary>  
  25.         private void BindDoclib()  
  26.         {  
  27.             string url = SPContext.Current.Web.Url;  
  28.             #region  
  29.             SPSecurity.RunWithElevatedPrivileges(delegate()  
  30.             {  
  31.                 using (SPSite site = new SPSite(url))  
  32.                 {  
  33.                     using (SPWeb web = site.OpenWeb())  
  34.                     {  
  35.                         foreach (SPList list in web.Lists)  
  36.                         {  
  37.                             if (list.BaseTemplate != SPListTemplateType.DocumentLibrary)//找到文档库   
  38.                             {  
  39.                                 continue;  
  40.                             }  
  41.                             else  
  42.                             {  
  43.                                 if (list.Title == "测试文档库")  
  44.                                 {  
  45.                                     TreeNode node = new TreeNode();  
  46.                                     node.Text = list.Title;  
  47.                                     node.NavigateUrl = list.DefaultViewUrl;  
  48.                                     TreeView1.Nodes.Add(node);  
  49.                                     ChildDocFolder(list.RootFolder, node);  
  50.                                 }  
  51.                             }  
  52.                         }  
  53.                     }  
  54.                 }  
  55.   
  56.             });  
  57.             #endregion  
  58.         }  
  59.   
  60.         /// <summary>  
  61.         /// 递归方法读取文档库  
  62.         /// </summary>  
  63.         /// <param name="folder">父文件夹</param>  
  64.         /// <param name="currentNode">当前节点</param>  
  65.         private void ChildDocFolder(SPFolder folder, TreeNode currentNode)  
  66.         {  
  67.             string url = SPContext.Current.Web.Url;  
  68.             if (folder.SubFolders.Count == 0)// //如果不存在子文件夹就返回,并把文件夹中的文件加到TreeView中   
  69.             {  
  70.                 foreach (SPFile file in folder.Files)//显示子文件  
  71.                 {  
  72.                     TreeNode node = new TreeNode();  
  73.                     node.Text = file.Name;  
  74.                     node.NavigateUrl = url + "/" + file.Url;  
  75.                     node.ImageUrl = "_layouts/images/" + file.IconUrl;  
  76.                     currentNode.ChildNodes.Add(node);  
  77.                 }  
  78.                 return;  
  79.             }  
  80.             else  
  81.             {  
  82.                 foreach (SPFile file in folder.Files)//添加当前文件夹中的文件到TreeView中   
  83.                 {  
  84.                     TreeNode node = new TreeNode();  
  85.                     node.Text = file.Name;  
  86.                     node.NavigateUrl = url + "/" + file.Url;  
  87.                     node.ImageUrl = "_layouts/images/" + file.IconUrl;  
  88.                     currentNode.ChildNodes.Add(node);  
  89.                 }  
  90.                 foreach (SPFolder spfolder in folder.SubFolders)  
  91.                 {  
  92.                     if (spfolder.Name == "Forms")//去掉默认的系统文件夹   
  93.                     {  
  94.                         continue;  
  95.                     }  
  96.                     TreeNode node = new TreeNode();  
  97.                     node.Text = spfolder.Name;  
  98.                     node.NavigateUrl = url + "/" + spfolder.Url;  
  99.                     node.ImageUrl ="_layouts/images/folder.gif";  
  100.                     currentNode.ChildNodes.Add(node); //添加当前文件夹到TreeView中   
  101.                     ChildDocFolder(spfolder, node);  //展示当前文件夹下面的文件和文件夹  
  102.                 }  
  103.             }  
  104.         }   
  105.     }  
  106. }  

代码完成,点击测试部署webpart到sharepoint网站中,在页面插入webpart,测试效果如下

原文地址:https://www.cnblogs.com/ningang/p/4322058.html