首页 > 代码库 > 根据SPWeb递推得到地下的所有子网站和List的Json

根据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

 

根据SPWeb递推得到地下的所有子网站和List的Json