在sharepoint 2013中,Documnet library(文档库)包含多层文件夹,当进入到文件夹后,返回指定层次了(例如返回上一层),需要用浏览器的返回。
使用起来不方便,而且浏览器的返回,会导致一些问题,不推荐普遍用户使用。
解决这个问题,可以做一个目录结构,实现方法是:访问Document library 时, url 有个参数[RootFolder],记录了路径。
主要对[RootFolder]参数进行处理。
这里使用webpart实现。当然,也可以Javascript方式实现
效果如下,已经进入多层文件夹: 文件路径,后面的每个节点可点击,跳转到相应的文件夹:
codeBehind, 如下
protected void Page_Load(object sender, EventArgs e) { string folderURL = this.Page.Request.QueryString["RootFolder"]; if (string.IsNullOrEmpty(folderURL) == false) { string url = this.Page.Request.Url.AbsolutePath; var nameValues = HttpUtility.ParseQueryString(this.Page.Request.QueryString.ToString()); StringBuilder sb = new StringBuilder(); string[] arrStr = folderURL.Split('/'); int arrLength = arrStr.Length; string FolderCTID = this.Page.Request.QueryString["FolderCTID"]; string View = this.Page.Request.QueryString["View"]; string tab = this.Page.Request.QueryString["tab"]; string module = this.Page.Request.QueryString["module"]; if (arrStr != null && arrLength > 0) { for (int i = 0; i < arrLength; i++) { string name = arrStr[i]; if (name.Length > 0) { string rootFolderValue = folderURL.Substring(0, folderURL.LastIndexOf(name)); rootFolderValue = rootFolderValue + name + "/"; nameValues.Set("RootFolder", rootFolderValue); string newUrl = url + "?" + string.Format("RootFolder={0}&FolderCTID={1}&View={2}&tab={3}&module={4}", HttpUtility.UrlEncode(rootFolderValue), FolderCTID, HttpUtility.UrlEncode(View), tab, HttpUtility.UrlEncode(module)); if (i == 1) { name = "根目录"; } sb.Append("<a href='" + newUrl + "'>" + name + "</a> "); if (i != arrLength - 1) { sb.Append(">>"); } } } } pathStr = sb.ToString(); } }