需求描述:Sharepoint 文档库中存放的文档太多的时候,我们可以根据文件的不同用途,功能等建立文件夹
进行分类存放,方便管理。这种存储方式和我们在电脑磁盘中新建文件夹存放文件是一样的。在sharepoint中
同样有以文件夹作为导航的功能,方便用户浏览文档库的存放结构,从而直接进入到要查看的文件夹下。
先上效果图:
说明:左侧是开发的webpart,内容是获取到的右边测试文档库的文件夹的一个结构,文件夹名,查看路径。点击左边的一个文件夹,右边文档库
会显示相应文件夹下的文件。
代码如下:
1. 在项目中添加可视化用户控件
2. 前台添加treeview控件
3. 后台代码
protected void Page_Load(object sender, EventArgs e) { DataBind(); } private void DataBind() { string weburl = SPContext.Current.Web.Url.ToString(); SPSecurity.RunWithElevatedPrivileges(delegate() { try { using (SPSite site = new Microsoft.SharePoint.SPSite("http://localhost/test/"))//获取到站点 { SPWeb spWeb = site.OpenWeb(); spWeb.AllowUnsafeUpdates = true; SPList docLib = spWeb.Lists["测试文档库"];//获取到文档库列表 if(TreewFolder.Nodes.Count==0)//如果没有内容才添加,防止刷新重复添加,单独页面也可以在pageload 中加ispostback的判断 { TreeNode node = new TreeNode(); node.Text = "测试文档库"; node.NavigateUrl = weburl; TreewFolder.Nodes.Add(node); //添加根节点 GetChildNode(docLib.RootFolder, node, weburl);//添加子节点 } } } catch (Exception ex) { } }); }
private void GetChildNode(SPFolder sPFolder, TreeNode Cruuentnode, string weburl) { if(sPFolder.SubFolders.Count>0) //判断当前的folder下是否有子文件夹 { foreach(SPFolder folder in sPFolder.SubFolders ) //遍历 { if (folder.Name.ToString()!="Forms") //排除Forms的文件夹 { TreeNode node = new TreeNode(); node.Text = folder.Name.ToString(); node.NavigateUrl = weburl + "/" + folder.Url; //加上文件夹的查看路径 Cruuentnode.ChildNodes.Add(node); //添加子节点 GetChildNode(folder, node, weburl); } } } }