using System; using System.Collections.Generic; using System.Linq; using System.ComponentModel; using System.Globalization; /// /// TreeView 的摘要描述 /// public class TreeView { public TreeView() { // // TODO: 在這裡新增建構函式邏輯 // } public class TreeItem { public int num { get; set; } public string kind { get; set; } public int? root { get; set; } public int? range { get; set; } public List Children { get; set; } public int Level { get; set; } } public List get_data(List data, int root, int level) { var resData = new List(); var query = data.Where(x => x.root == root).Select(x => new TreeItem { kind = x.kind, num = x.num, root = x.root, range = x.range, }).ToList(); if (query.Any()) { level++; query.ForEach(x => { x.Children = get_data(data, x.num, level); x.Level = level; resData.Add(x); }); } return resData; } public List get_data2(List data, int root, int level, List resData=null) { if (resData == null) { resData = new List(); } var query = data.Where(x => x.root == root).Select(x => new TreeItem { kind = x.kind, num = x.num, root = x.root, range = x.range, }).ToList(); if (query.Any()) { level++; query.ForEach(x => { resData.Add(x); if ( data.Where(s => s.root == x.num).Count() > 0) { get_data2(data, x.num, level, resData); } x.Level = level; }); } return resData; } public List subKinds(List data, int root, List resData = null) { if (resData == null) { resData = new List(); } var query = data.Where(x => x.root == root).Select(x => new TreeItem { num = x.num, root = x.root, }).ToList(); if (query.Any()) { query.ForEach(x => { resData.Add(x.num); subKinds(data, x.num, resData); }); } return resData; } public string kindText(List data, int? num) { string txt = ""; if (num.HasValue) { var query = data.Where(x => x.num == num.Value).Select(x => new TreeItem { kind = x.kind, num = x.num, root = x.root, }).FirstOrDefault(); if (query != null) { if(query.root > 0) { txt = kindText(data, query.root) + "/"+ query.kind; } else { txt = query.kind; } } } return txt; } public string RptDash(int count) { string txt = ""; if(count == 1) { return ""; } else { txt ="-" + RptDash(count-1); } return txt; } }