migrate to new git
This commit is contained in:
154
web/App_Code/TreeView.cs
Normal file
154
web/App_Code/TreeView.cs
Normal file
@@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
|
||||
/// <summary>
|
||||
/// TreeView 的摘要描述
|
||||
/// </summary>
|
||||
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<TreeItem> Children { get; set; }
|
||||
public int Level { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public List<TreeItem> get_data(List<TreeItem> data, int root, int level)
|
||||
{
|
||||
var resData = new List<TreeItem>();
|
||||
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<TreeItem> get_data2(List<TreeItem> data, int root, int level, List<TreeItem> resData=null)
|
||||
{
|
||||
if (resData == null)
|
||||
{
|
||||
resData = new List<TreeItem>();
|
||||
}
|
||||
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<int> subKinds(List<TreeItem> data, int root, List<int> resData = null)
|
||||
{
|
||||
if (resData == null)
|
||||
{
|
||||
resData = new List<int>();
|
||||
}
|
||||
|
||||
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<TreeItem> 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user