데브익스프레스(DevExpress) 컴포넌트를 사용하여 아래와 같은 형태의 트리를 만들건데,
데이터베이스에서 읽은 데이터테이블을 기준으로 루프 돌면서 루트트리노드와 차일드트리노드 등을
생성하는 샘플 코드 입니다.
// - 공원장비
// - 경마공원
// - 대관람차
// - 바이킹
// - 죠스
// - 서울대공원
// - 다람쥐통
// - 범퍼카
DevExpress.XtraTreeList 컨트롤의 name은 trEquip 입니다.
별도의 UI 옵션 조정에 대한 내용은 설명하지 않았습니다.
DevExpress.XtraTreeList 를 이용하는 소스 샘플입니다.
private void LoadDBTree()
{
string sQuery = @"select * from TreeTable";
DataTable dtEquip = _dbcon.GetDataTable(sQuery);
trEquip.OptionsBehavior.Editable = false;
//트리의 루트 노드 생성
TreeListColumn tlcTitle = new TreeListColumn();
tlcTitle.Caption = "공원장비";
tlcTitle.Width = 100;
tlcTitle.Visible = true;
trEquip.Columns.Add(tlcTitle);
TreeListNode tlnRoot = trEquip.AppendNode("공원", null);
tlnRoot.SetValue(0, "공원");
TreeListNode tlnPark = null; //임시로 지정될 부모 노드
TreeListNode tlnEquip = null; //임시로 지정될 장비 노드
string tempiParkArea = "0";
if (dtEquip != null && dtEquip.Rows.Count > 0)
{
for (int i = 0; i < dtEquip.Rows.Count; i++)
{
// iParkArea 가 다르면 루트 트리 밑으로 자식 트리 붙이고, 자식트리 밑으로 손자트리 생성
if(tempiParkArea != dtEquip.Rows[i]["iParkArea"].ToString())
{
tlnPark = trEquip.AppendNode(dtEquip.Rows[i]["ParkName"].ToString(), tlnRoot, dtEquip.Rows[i]);
tlnPark.SetValue(0, dtEquip.Rows[i]["ParkName"].ToString());
tlnEquip = trEquip.AppendNode(dtEquip.Rows[i]["EquipName"].ToString(), tlnPark, dtEquip.Rows[i]);
tlnEquip.SetValue(0, dtEquip.Rows[i]["EquipName"].ToString());
}
else
{
// iParkArea 가 같으므로 공원 밑으로 장비 트리 노드 추가
tlnEquip = trEquip.AppendNode(dtEquip.Rows[i]["EquipName"].ToString(), tlnPark, dtEquip.Rows[i]);
tlnEquip.SetValue(0, dtEquip.Rows[i]["EquipName"].ToString());
}
tempiParkArea = dtEquip.Rows[i]["iParkArea"].ToString();
}
}
}
댓글