일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MIX10
- 옴니아2
- 윈도우 모바일
- 소년포비소프트
- 루나네스
- winmodev
- 윈도우폰
- 데브피아
- 안드로이드
- 훈스닷넷
- 지승욱
- UX베이커리
- 윈모데브
- windows mobile 6.5
- 실버라이트 코리아
- 주신영
- 거제도
- 윈도데브
- 김춘배
- 서진호
- 신석현
- 소년포비
- 헤이맨
- 황광진
- 윈도우모바일
- 쉐어포인트코리아
- 신동혁
- 마이크로소프트
- 스마트폰
- 윈도우폰7
- Today
- Total
소년포비의 세계정복!!
TreeControl 구현 Class 본문
1. TreeControl Class 파일첨부.
2. 사용예.
ⓐ Load시 LEVEL1 노드 출력 - Level1Draw() 호출
// 레벨1을 구성한다.
private void Level1Draw()
{
#region 조직정보 LEVEL1 TreeView 구성
Cursor.Current = Cursors.WaitCursor;
int[] columnType = { 0, 0, 0, 0, 0 };
// 파일에서 조직정보를 읽어와서 데이타셋에 저장
dsOrg = Ft.FillDataSet(InspectOrgFileNM, 5, columnType);
dv = dsOrg.Tables[0].DefaultView;
dv.RowFilter = "COL0 = 1";
// 최상위 LEVEL 생성 (트리컨트롤, 조직정보 데이타셋, 조직명컬럼, Level컬럼)
Tree.DrawOrgTreeLevel1(TreeOrg, dv, 2, 1);
TreeOrg.ExpandAll();
Cursor.Current = Cursors.Default;
#endregion
}
ⓑ 노드 선택시 하위 노드 보여주기
// 트리노드 선택시 선택노드 하위노드를 구성한다.
private void TreeOrg_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
#region 부서선택시 하위 부서 출력 및 부서명 텍스트 박스에 보여주기
SipShowIM(0);
if (formLoadChk)
{
formLoadChk = false;
return;
}
try
{
// 선택된 부서가 "원자력연구원" 일때는 텍스트박스에 "원자력연구원"을 넣어준다.
if (TreeOrg.SelectedNode.Text == Ft.KAERINAME)
{
TbOrg.Text = Ft.KAERINAME;
return;
}
// 선택된 부서명을 텍스트 박스에 보여준다. [조직코드]는 제외한다.
if (TreeOrg.SelectedNode.Text != "" || TreeOrg.SelectedNode.Text != null)
{
string[] arrOrgNM = TreeOrg.SelectedNode.Text.Split('[');
TbOrg.Text = arrOrgNM[0];
}
// 하위 노드가 이미 있는 경우는 리턴(중복으로 하위부서가 추가되므로)
if (TreeOrg.SelectedNode.GetNodeCount(false) > 0)
return;
// 선택된 상위부서에 속한 하위부서 생성
ChildLevelDraw(TreeOrg.SelectedNode);
}
catch (Exception) // ObjectDisposedException
{
MessageBox.Show("부서 선택시 에러가 발생했습니다.", "재물조사대상부서선택", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
}
#endregion
}
// TreeOrg_AfterSelect 이벤트에서 선택한 노드 하위 노드를 구성한다.
private void ChildLevelDraw(TreeNode selNode)
{
#region 조직정보 하위LEVEL TreeView 구성
// 선택한 노드의 부서코드를 가져온다.(상위부서노드)
string[] arrOrgCd = selNode.Text.Split('[');
string[] OrgCd = arrOrgCd[1].Split(']');
dv.RowFilter = "COL1 = '" + OrgCd[0] + "'";
string ParentNodeCd = dv[0][1].ToString();
// 가져온 부서코드가 상위부서코드인 하위부서를 가지고 View를 만든다.
dv = dsOrg.Tables[0].DefaultView;
dv.RowFilter = "COL4 = '" + ParentNodeCd + "'";
// 하위부서를 상위부서에 추가 시킨다.
Tree.DrawOrgTreeLevel(selNode, dv, 2, 1, 0);
// 자식노드 확장
TreeOrg.SelectedNode.ExpandAll();
#endregion
}
ⓒ 노드 조회하기
// 검색시 모든 노드를 구성하고 검색을 한다.
// TreeDataDrawLoop를 호출한다.
private void BtnSearch_Click(object sender, System.EventArgs e)
{
#region 트리 조회(부서조회)
SipShowIM(0);
#region Validation
if (TbOrg.Text == "")
return;
// 검색명 입력을 안하고 트리에서 조직선택하고 검색을 누를때 방지.
if (!searchChk)
return;
// 검색시 루프를 반복적으로 돌지 않도록 플래그를 두었다.
Tree.bLoopReturn = false;
#endregion
int[] DataTableType ={ 0, 0, 0 };
#region 검색시 트리를 전부 다시 그린다.(모든 부서를 그리고 검색하도록 해야한당)
// 다시 그리는 이유는 마스터정보 받기에서 "원자력연구원"을 체크했을 때의 경우와 같다.
// 아 정말 무식하다.. ㅠ_ㅠ
foreach (TreeNode node in TreeOrg.Nodes[0].Nodes)
{
node.Nodes.Clear();
TreeDataDrawLoop(node);
}
#endregion
Tree.TreeNodeSearch(TreeOrg, dsOrg, "COL2", TbOrg.Text, 0, null);
searchChk = false;
#endregion
}
// 부서 조회시 LEVEL1에 대한 노드를 가지고 loop를 돌면서 하위 노드를 구성한다.
private void TreeDataDrawLoop(TreeNode node)
{
#region 노드를 검색해서 해당 부서를 찾는다.
// 선택한 노드의 부서코드를 가져온다.(상위부서노드)
string[] arrOrgCd = node.Text.Split('[');
string[] OrgCd = arrOrgCd[1].Split(']');
dv.RowFilter = "COL1 = '" + OrgCd[0] + "'";
string ParentNodeCd = OrgCd[0];
// 가져온 부서코드가 상위부서코드인 하위부서를 가지고 View를 만든다.
dv = dsOrg.Tables[0].DefaultView;
dv.RowFilter = "COL4 = '" + ParentNodeCd + "'";
// 하위부서를 상위부서에 추가 시킨다.
Tree.DrawOrgTreeLevel(node, dv, 2, 1, 0);
// 자식노드 확장
TreeOrg.SelectedNode.ExpandAll();
// 그 밑에 하위노드가 있는지 확인해서 또 추가
foreach (TreeNode childnode in node.Nodes)
{
TreeDataDrawLoop(childnode);
}
#endregion
}
'윈도우폰 세상 > Windows Phone' 카테고리의 다른 글
PDA에서 웹서비스 호출. 리턴값 데이터셋으로 받기 (0) | 2009.09.27 |
---|---|
Mobile에서 웹서비스 호출시 주의사항~ (0) | 2009.09.27 |
Windows CE Form 고정 시키기 (0) | 2009.09.27 |
Windows Moblie 퍼즐 게임 4 (0) | 2009.09.27 |
Windows Moblie 퍼즐 게임 3 (0) | 2009.09.27 |