• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
汇小流以成江海,积毫沙乃成高塔
博客园    首页    新随笔    联系   管理    订阅  订阅

ligerTree.js+ASP.net 无限层级树

一 无限层级Tree效果图


二 JSON获取


 

 1         /// <summary>
 2         /// 初始化Tree 数据
 3         ///PID=ID 关联
 4         /// </summary>
 5         /// <param name="sender"></param>
 6         /// <param name="e"></param>
 7         private void btnTree_Click(object sender, EventArgs e)
 8         {            
 9             DataTable newdtb = new DataTable();
10             newdtb.Columns.Add("ID", typeof(string));
11             newdtb.Columns.Add("Name", typeof(string));
12             newdtb.Columns.Add("PID", typeof(string));
13 
14             DataRow newRow = newdtb.NewRow();           
15             newRow = newdtb.NewRow();
16             newRow["ID"] = 1;
17             newRow["Name"] = "产品" + 1;
18             newRow["PID"] = 0;
19             newdtb.Rows.Add(newRow);
20             
21            
22             newRow = newdtb.NewRow();
23             newRow["ID"] = 1.1;
24             newRow["Name"] = "产品" + 1.1;
25             newRow["PID"] = 1;
26             newdtb.Rows.Add(newRow);
27 
28             newRow = newdtb.NewRow();
29             newRow["ID"] = "1.1.1";
30             newRow["Name"] = "产品" + "1.1.1";
31             newRow["PID"] = "1.1";
32             newdtb.Rows.Add(newRow);
33 
34             newRow = newdtb.NewRow();
35             newRow["ID"] = "1.1.1.1";
36             newRow["Name"] = "产品" + "1.1.1.1";
37             newRow["PID"] = "1.1.1";
38             newdtb.Rows.Add(newRow);
39 
40             newRow = newdtb.NewRow();
41             newRow["ID"] = 1.2;
42             newRow["Name"] = "产品" + 1.2;
43             newRow["PID"] = 1;
44             newdtb.Rows.Add(newRow);
45 
46             newRow = newdtb.NewRow();
47             newRow["ID"] = "1.2.1";
48             newRow["Name"] = "产品" + "1.2.1";
49             newRow["PID"] = "1.2";
50             newdtb.Rows.Add(newRow);
51 
52             newRow = newdtb.NewRow();
53             newRow["ID"] = "1.2.1.1";
54             newRow["Name"] = "产品" + "1.2.1.1";
55             newRow["PID"] = "1.2.1";
56             newdtb.Rows.Add(newRow);
57 
58             newRow = newdtb.NewRow();
59             newRow["ID"] = "1.2.1.1.1";
60             newRow["Name"] = "产品" + "1.2.1.1.1";
61             newRow["PID"] = "1.2.1.1";
62             newdtb.Rows.Add(newRow);
63 
64 
65             newdtb = new DataTable();
66             string result = GetJson("产品列表","0",newdtb, "PID", "0", "ID", "Name");                                 
67 
68             MessageBox.Show(result);
69         }
GetJson的具体实现,封装了添加根节点的方法,使用了递归的思想
 1 /// <summary>
 2         /// 获取Tree JSON(rootName 为空就是实际的根节点,不为空 可以添加虚拟节点)
 3         /// </summary>
 4         /// <param name="rootName">根节点名称</param>
 5         /// <param name="rootID">根节点ID</param>
 6         /// <param name="dt">要转化的表</param>
 7         /// <param name="pField">表中的父节点字段</param>
 8         /// <param name="pValue">表中顶层节点的值,没有 可以输入为0</param>
 9         /// <param name="kField">关键字字段名称</param>
10         /// <param name="TextField">要显示的文本 对应的字段</param>
11         /// <returns></returns>
12         public string GetJson(string rootName, string rootID, DataTable dt, string pField, string pValue, string kField, string TextField)
13         {           
14             string result = string.Empty;
15             if (rootName == "")
16             {
17                 result = TableToTreeJson(dt, "PID", "0", "ID", "Name");
18                 if (result.Length > 12)
19                 {
20                     result = result.Substring(12);
21                 }
22             }
23             else 
24             {
25                 result += "[{";
26                 result += string.Format("\"id\":\"{0}\",", rootID);
27                 result += string.Format("\"text\":\"{0}\"", rootName);               
28                 result += TableToTreeJson(dt, "PID", "0", "ID", "Name");
29                 result += "}]";
30             }
31             
32             return result;
33         }
34 
35         // <summary>
36         /// 递归将DataTable转化为适合jquery easy ui 控件tree ,combotree 的 json
37         /// 该方法最后还要 将结果稍微处理下,将最前面的,"children" 字符去掉.
38         /// </summary>
39         /// <param name="dt">要转化的表</param>
40         /// <param name="pField">表中的父节点字段</param>
41         /// <param name="pValue">表中顶层节点的值,没有 可以输入为0</param>
42         /// <param name="kField">关键字字段名称</param>
43         /// <param name="TextField">要显示的文本 对应的字段</param>
44         /// <returns></returns>
45         public static string TableToTreeJson(DataTable dt, string pField, string pValue, string kField, string TextField)
46         {
47             StringBuilder sb = new StringBuilder();
48             string filter = String.Format(" {0}='{1}' ", pField, pValue);//获取顶级目录.
49             DataRow[] drs = dt.Select(filter);
50             if (drs.Length < 1)
51                 return "";
52             sb.Append(",\"children\":[");
53             foreach (DataRow dr in drs)
54             {
55                 string pcv = dr[kField].ToString();
56                 sb.Append("{");
57                 sb.AppendFormat("\"id\":\"{0}\",", dr[kField].ToString());
58                 sb.AppendFormat("\"text\":\"{0}\"", dr[TextField].ToString());
59                 sb.Append(TableToTreeJson(dt, pField, pcv, kField, TextField).TrimEnd(','));
60                 sb.Append("},");
61             }
62             if (sb.ToString().EndsWith(","))
63             {
64                 sb.Remove(sb.Length - 1, 1);
65             }
66             sb.Append("]");
67             return sb.ToString();
68         }

 

三 相关的下载

ligerUI.Demos.Tree2.rar

posted @ 2014-09-07 10:02  小流  阅读(490)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3