using System;
using System.Collections.Generic;
using System.Data;
#region 소스 테이블 구하기 - GetSourceTable()
/// <summary>
/// 소스 테이블 구하기
/// </summary>
/// <returns>소스 데이터 테이블</returns>
public DataTable GetSourceTable()
{
DataTable table = new DataTable();
table.Columns.Add("ID1" , typeof(string)); // 대분류 ID
table.Columns.Add("Name1", typeof(string)); // 대분류명
table.Columns.Add("ID2" , typeof(string)); // 중분류 ID
table.Columns.Add("Name2", typeof(string)); // 중분류명
table.Columns.Add("ID3" , typeof(string)); // 소분류 ID
table.Columns.Add("Name3", typeof(string)); // 소분류명
table.Rows.Add("A", "A", "B", "B", "C", "C");
table.Rows.Add("A", "A", "B", "B", "C", "C");
table.Rows.Add("A", "A", "B", "B", "C", "C");
table.Rows.Add("A", "A", "B", "B", "D", "D");
table.Rows.Add("A", "A", "B", "B", "E", "E");
table.Rows.Add("A", "A", "B", "B", "E", "E");
table.Rows.Add("A", "A", "B", "B", "F", "F");
table.Rows.Add("G", "G", "H", "H", "I", "I");
table.Rows.Add("G", "G", "H", "H", "J", "J");
table.AcceptChanges();
return table;
}
#endregion
...
DataTable sourceTable = GetSourceTable();
List<NodeFieldData> nodeFieldDataList = new List<NodeFieldData>();
nodeFieldDataList.Add(new NodeFieldData("ID1", "Name1")); // 대분류 ID, 대분류명
nodeFieldDataList.Add(new NodeFieldData("ID2", "Name2")); // 중분류 ID, 중분류명
nodeFieldDataList.Add(new NodeFieldData("ID3", "Name3")); // 소분류 ID, 소분류명
DataTable treeTable = GetTreeTable(sourceTable, nodeFieldDataList, "ParentID", "ID", "Name", "Path", false);
/*
결과 트리 데이터 테이블
-----------------------
ParentID ID Name Path
-------- -- ---- ------
(NULL) A A A
(NULL) G G G
A B B A/B
G H H G/H
B C C A/B/C
B D D A/B/D
B E E A/B/E
B F F A/B/F
H I I G/H/I
H J J G/H/J
----------------------
*/