Files
17168ERP/web/App_Code/TreeView.cs
2025-08-29 01:27:25 +08:00

154 lines
3.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}