根据SPWeb递推得到地下的所有子网站和List的Json
1.开发缘由
其实这样的工具很多,在网站中一点点看也是大概能够了解的。但是属于强迫症,总想看一下所有。
2.设计思路
开始是想做成思维导图的模式,jQuery插件,Html都搜过,结果只找到了http://qunee.com/buy.html。有什么办法呢,只能随便找个tree显示。
Json拼写开始以为收到擒来,结果写逻辑生疏的我竟然写了两三个小时。
公布出来大家一起学习吧。
3.代码部分
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Microsoft.SharePoint; public partial class _Default : System.Web.UI.Page { public string strr; bool IsAddList = true; string path = "http://xxxx18:8099/1234/"; protected void Page_Load(object sender, EventArgs e) { strr = GetJsonFormWeb(path); strr = "[" + strr + "]"; } public string GetJsonFormWeb(string path) { string jsonStr = ""; SPSecurity.RunWithElevatedPrivileges(delegate { using (SPSite site = new SPSite(path)) { using (SPWeb web = site.OpenWeb()) { if (web.Webs.Count>0) { for (int i = 0; i < web.Webs.Count; i++) { jsonStr += "{text:‘" + "Web " + (i+1).ToString() + "----" + web.Webs[i].Name + "‘"; if (web.Webs[i].Webs.Count > 0) { jsonStr += ",children: ["; jsonStr += GetJsonFormWeb(web.Webs[i].Url); if (IsAddList && web.Webs[i].Lists.Count > 0) { jsonStr +="," + GetListJson(web.Webs[i]); } jsonStr += "]"; } else { if (IsAddList && web.Lists.Count > 0) { jsonStr += ",children: ["; jsonStr += GetListJson(web.Webs[i]); jsonStr += "]"; } } //if (web.Webs[i].Webs.Count > 0 && web.Webs[i].Lists.Count > 0) //{ // jsonStr += ","; //} jsonStr += "}"; if (i < web.Webs.Count - 1) { jsonStr += ","; } } } else { if (web.Lists.Count > 0 && IsAddList) { jsonStr += ",children: ["; jsonStr += GetListJson(web); jsonStr += "]"; } } if (web.Webs.Count > 0 && web.Lists.Count > 0 && IsAddList) { jsonStr += "," + GetListJson(web); } } } }); return jsonStr; } public string GetListJson(SPWeb web) { if (!IsAddList) { return ""; } string str = ""; if (web.Lists.Count>0) { for (int i = 0; i < web.Lists.Count; i++) { if (web.Lists[i].Title.Trim().Length>0) { str += "{text:‘" + web.Lists[i].Title + "‘}"; if (i < web.Lists.Count - 1) { str += ","; } } } } return str; } }
4.源码:
开发工具:VS2005
http://app.yinxiang.com/shard/s12/sh/765c7019-04ec-4efd-9f83-8e4d0e068c6b/dbab5493b8c06753d4cd6779ec929067
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。