數據庫字段
id name parent_id
1 水果 0
2 蘋果 1
3 香蕉 1
如果是根節點此處使用0代替根節點的父節點。
生成方式一
/// <summary> /// 生成zTree標准json數據源 /// </summary> /// <param name="parent_id">父節點</param> /// <returns></returns> public string GetModuleTreeJson(string parent_id) { StringBuilder jsonTree = new StringBuilder(); if (string.IsNullOrEmpty(parent_id)) { parent_id = "0"; } string where = string.Format(" and parent_id='{0}'", parent_id); DataSet ds = DALModul.getModuleList(where);//封裝的查詢數據庫方法 if (ds.Tables[0].Rows.Count > 0) { jsonTree.Append("["); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr = ds.Tables[0].Rows[i]; jsonTree.Append("{\"id\":\"").Append(dr["id"]).Append("\","); jsonTree.Append("\"name\":\"").Append(dr["module"]).Append("\","); //在此處添加其他DIY屬性,注意最后的“,” jsonTree.Append("\"product\":\"").Append(dr["product"]).Append("\","); jsonTree.Append("\"children\":").Append(GetModuleTreeJson(dr["id"].ToString())); jsonTree.Append("},"); if (i == (ds.Tables[0].Rows.Count - 1)) { jsonTree.Remove(jsonTree.Length - 1, 1); } } jsonTree.Append("]"); } else { jsonTree.Append("\"\""); } return jsonTree.ToString(); }
生成方式二
對象類
/// <summary> /// 用來生成zTree需要的json格式,類屬性與ztree配置節點對應 /// </summary> public class zTree { public string id { get; set; } /// <summary> /// 父節點id /// </summary> public string pId { get; set; } public string name { get; set; } public bool isParent { get; set; } /// <summary> /// 是否展開 /// </summary> public bool open { get; set; } /// <summary> /// 子節點列表 /// </summary> public List<zTree> children { get; set; } } /// <summary> /// 水果類 /// </summary> public class fruit { public int id { get; set; } public string id { get; set; } public int parent_id { get; set; } }
生成json
/// <summary> /// 獲取json字符 /// </summary> public class GetZTreeJson { /// <summary> /// 獲取json字符 /// </summary> public string josn() { List<fruit> listAll = null;//查詢全部數據,查詢省略,封裝到list List<zTree> listZtree = GetJsonTreefruit(listAll, 0); return Newtonsoft.Json.JsonConvert.SerializeObject(listZtree); } /// <summary> /// 封裝成ztree類 /// </summary> /// <param name="listAll">全部數據list</param> /// <param name="parentid">根節點的id</param> /// <returns></returns> public List<zTree> GetJsonTreefruit(List<fruit> listAll, int parentid) { List<zTree> listTree = new List<zTree>(); IEnumerable<fruit> list = listAll.Where(p => p.parent_id == parentid);//使用linq查詢,必須重復查詢數據庫,數據量小時適用 if (list.Count() > 0) { zTree ztree = null; foreach (fruit item in list) { ztree = new zTree(); ztree.id = item.id.ToString(); ztree.pId = item.parent_id.ToString(); ztree.name = item.name; List<zTree> listChildren = GetJsonTreefruit(listAll, item.id); if (listChildren.Count > 0) { ztree.isParent = true; ztree.children = listChildren; } else { ztree.isParent = false; ztree.children = null; } listTree.Add(ztree); } } return listTree; } }
