最近看到不少关于文档库方面的文章,最多的就是文档的树形展示。一直以为就是一个简单信息的读取,所以一直没有在意。当我仔细想一下后,发现还是有点意思的,因为完全是一个树形结构.
我通过了一个递归来实现了数据的读取。
- public void ShowDocFolder(SPFolder folder, TreeNode currentNode)
- {
- if (folder.SubFolders.Count == 0) //如果不存在子文件夹就返回,并把文件夹中的文件加到TreeView中
- {
- foreach (SPFile file in folder.Files)
- {
- TreeNode node = new TreeNode();
- node.Text = file.Name;
- node.NavigateUrl = "../" + file.Url;
- currentNode.ChildNodes.Add(node);
- }
- return;
- }
- else
- {
- foreach (SPFile filein folder.Files) //添加当前文件夹中的文件到TreeView中
- {
- TreeNode node = new TreeNode();
- node.Text = file.Name;
- node.NavigateUrl = "../" + file.Url;
- node.ImageUrl = "../_layouts/images/" + file.IconUrl;
- currentNode.ChildNodes.Add(node);
- }
- foreach (SPFolder folder in folder.SubFolders)
- {
- if (folder.Name == "Forms") //去掉默认的系统文件夹
- {
- continue;
- }
- TreeNode node = new TreeNode();
- node.Text = folder.Name;
- node.NavigateUrl = "../" + folder.Url;
- node.ImageUrl = "../img/PH02738U.BMP";
- currentNode.ChildNodes.Add(node); //添加当前文件夹到TreeView中
- ShowDocFolder(folder, node); //展示当前文件夹下面的文件和文件夹
- }
- }
- }
- protected void Page_Load(object sender, EventArgs e)
- {
- SPSecurity.RunWithElevatedPrivileges(delegate()
- {
- using (SPSite site = new SPSite("http://pc-lyliu"))
- {
- SPWeb web = site.OpenWeb();
- foreach (SPList list in web.Lists)
- {
- if (list.BaseTemplate != SPListTemplateType.DocumentLibrary) //找到文档库
- {
- continue;
- }
- TreeNode node = new TreeNode();
- node.Text = list.Title;
- node.NavigateUrl = "../" + list.DefaultViewUrl;
- DocTreeView.Nodes.Add(node);
- ShowDocFolder(list.RootFolder, node);
- }
- ShowFolder(list.RootFolder, null);
- }
- });
- }
以上的代码仅供参考。