56 lines
2.0 KiB
C#
56 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace MyCode.Project.Infrastructure.Common
|
|
{
|
|
public class treeJsonHelper
|
|
{
|
|
/// <summary>
|
|
/// 根据DataTable生成Json树结构
|
|
/// </summary>
|
|
/// <param name="tabel">数据源</param>
|
|
/// <param name="idCol">ID列</param>
|
|
/// <param name="txtCol">Text列</param>
|
|
/// <param name="rela">关系字段</param>
|
|
/// <param name="pId">父ID</param>
|
|
StringBuilder result = new StringBuilder();
|
|
StringBuilder sb = new StringBuilder();
|
|
private void GetTreeJsonByTable(DataTable table, string idCol, string txtCol, string rela, object pId)
|
|
{
|
|
result.Append(sb.ToString());
|
|
sb.Clear();
|
|
if (table.Rows.Count > 0)
|
|
{
|
|
sb.Append("[");
|
|
string filer = string.Format("{0}='{1}'", rela, pId);
|
|
DataRow[] rows = table.Select(filer);
|
|
if (rows.Length > 0)
|
|
{
|
|
foreach (DataRow row in rows)
|
|
{
|
|
sb.Append("{\"id\":\"" + row[idCol] + "\",\"text\":\"" + row[txtCol] + "\",\"state\":\"open\"");
|
|
if (table.Select(string.Format("{0}='{1}'", rela, row[idCol])).Length > 0)
|
|
{
|
|
sb.Append(",\"children\":");
|
|
GetTreeJsonByTable(table, idCol, txtCol, rela, row[idCol]);
|
|
result.Append(sb.ToString());
|
|
sb.Clear();
|
|
}
|
|
result.Append(sb.ToString());
|
|
sb.Clear();
|
|
sb.Append("},");
|
|
}
|
|
sb = sb.Remove(sb.Length - 1, 1);
|
|
}
|
|
sb.Append("]");
|
|
result.Append(sb.ToString());
|
|
sb.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|