一個遞歸處理json tree樹節點幫助類

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.Hosting;
using System.Security.Permissions;
using System.Text;
using ClientControl;

/// <summary>
///ExtTree 的摘要說明
/// </summary>
public class ExtTree
{
    private string _XMLpath;
    private static ExtTree extTree = null;
    public static ExtTree Current
    {
        get
        {
            if (extTree == null)
                extTree = new ExtTree();

            return extTree;
        }
    }

    DataTable dtTree = new DataTable();

    private string logidID = string.Empty;
    private string sessionID = string.Empty;

 private ExtTree()
 {
        //InitXMLpath();
        //GetAllNodes();
 }

    private void InitXMLpath()
    {
        string xmlpath = "~/app_data/tree.xml";
        _XMLpath = HostingEnvironment.MapPath(xmlpath);
        FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, _XMLpath);
        permission.Demand();
    }

    private DataTable GetAllNodes()
    {
        //ds.ReadXml(_XMLpath);
        dtTree = MainClientControl.Instance().GetTree(this.logidID, this.sessionID);
        return dtTree;
    }

    private DataTable GetAllNodes(string parentid)
    {
        //DataTable dt = GetAllNodes();
        DataTable dt = dtTree;
        DataTable _dt = dt.Clone();

        //DataRow[] drs = dt.Select("parentid = '" + parentid .ToString()+ "'");
        //if (drs.Length > 0)
        //{
        //    foreach (DataRow dr in drs)
        //    {
        //        _dt.ImportRow(dr);
        //    }
        //}
        foreach (DataRow dr in dt.Rows)
        {
            if (dr["parentid"].ToString() == parentid.ToString())
                _dt.Rows.Add(dr.ItemArray);
        }
        return _dt;
    }

 

    public string CreateExtTreeJSON(string logidID,string sessionID)
    {
        this.logidID = logidID;
        this.sessionID = sessionID;
        GetAllNodes();
        StringBuilder sb = new StringBuilder();
        CreateExtTreeNode(sb);
        string s= sb.ToString();
        return s.Replace("}{","},{");
    }
    /*
     * Ext Tree JSON 數據部分屬性說明:
     * text: 要顯示的節點文件
     * id:這個就不用解釋了
     * href:鏈接地址
     * hrefTarget:鏈接目標框架名稱
     * children:子節點 格式:[{節點1},{節點2}...]
     * leaf:當前節點是否爲葉子節點。如果爲false 則此節點有子節點。
     *                                  否則爲true,此節點在無子節點
     * */
    private void CreateExtTreeNode(StringBuilder sb)
    {
        DataTable dt = GetAllNodes("0");
        if (dt.Rows.Count > 0)
        {
            sb.Append("[");
            foreach (DataRow dr in dt.Rows)
            {
                sb.Append("{");
                sb.Append("text:'" + dr["title"].ToString() + "',");
                if (this.logidID == "9999")
                {
                    sb.Append("checked:false,");
                }
                //sb.Append("id:'node" + dr["id"].ToString() + "',");
                sb.Append("id:'" + dr["id"].ToString() + "',");
                sb.Append("href:'" + dr["url"].ToString() + "',");
                sb.Append("hrefTarget:'main'");
                AddChildrenNode(GetAllNodes(dr["id"].ToString()),sb);
                sb.Append("}");
            }
        }

        sb.Append("]");
    }

    private void AddChildrenNode(DataTable dt,StringBuilder sb)
    {
        if (dt.Rows.Count > 0)
        {
            sb.Append(",leaf:false,children:[");
            foreach (DataRow dr in dt.Rows)
            {
                sb.Append("{");
                sb.Append("text:'" + dr["title"].ToString() + "',");
                if (this.logidID == "9999")
                {
                    sb.Append("checked:false,");
                }
                //sb.Append("id:'node" + dr["id"].ToString() + "',");
                sb.Append("id:'" + dr["id"].ToString() + "',");
                sb.Append("href:'" + dr["url"].ToString() + "',");
                sb.Append("hrefTarget:'main'");
                AddChildrenNode(GetAllNodes(dr["id"].ToString()), sb);
                sb.Append("}");
            }

            sb.Append("]");
        }
        else
            sb.Append(",leaf:true");
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章