Tree(Grid)

Grid 컴포넌트를 이용한 Tree형태 표현

Grid 에서  edittype, displaytype = tree 로 설정하여 Dataset내용을 tree구조로 보여줄 수 있습니다.

TreeBasic_0

Tree구성을 위한 데이타 구조

TreeBasic_2

Tree형태를 표현하기 위해서는 DataSet컬럼에 Tree형태를 표현하기 위한 Level컬럼과 Label컬럼이
필요합니다.

Tree로 보여주기 위해서는 Dataset 구조를 Tree구조로 만들어야 합니다.

그리드 Cell의 displaytype, edittype 설정하기

TreeBasic_1

Grid에서 tree구조로 설정하기 위해서는 cell 속성을 아래와 같이 설정합니다.
displaytype= tree
edittype = tree

Tree 항목에 보여질 컬럼을 지정합니다.

TreeBasic_3

Tree의 Level를 지정합니다.

TreeBasic_4

소스 위치

Sample\Grid\np_Tree_Basic.xfdl

level에 따라 Text color설정방법

tree에서 level에 따라 text를 각자 다른 색상으로 지정할 수 있습니다.

Lebel_Color_0

Cell 속성 color에 expr를 이용하여 level별 색상지정

Tree_LevelColor_1

소스 위치

Sample\Grid\np_Tree_LebelColor.xfdl

Tree에서 이용 가능한 이미지 속성

Tree Image_0

treeitemimage

tree cell에서 tree State가 leaf일 때 사용할 이미지를 설정하는 속성입니다.  
즉, 하위 자식 노드가 없는 row에 적용되는 image입니다.

treecollapseimage

tree cell에서 tree가 축소(collapse) 상태일 경우에 사용할 이미지의 값을 설정하는 속성입니다. 
즉 ,닫혀진 (tree cell 버튼이 open [+] ) row에 적용되는 image입니다.

treeexpandimage

tree cell에서 tree가 확장(expand) 상태일 경우에 사용할 이미지의 값을 설정하는 속성입니다. 
즉 ,펼쳐진 (tree cell 버튼이 close [-] ) row에 적용되는 image입니다.
소스 위치

Sample\Grid\np_Tree_ImageType.xfdl

Tree 이미지 속성별 적용방법

Tree에서 이미지를 지정하는 방식에 대해 설명합니다.

Tree_Image_0

테마이미지

ADL에 선언된 테마에 포함되어 있는 image를 이용하는 방법입니다.
Tool에서 이용하는 테마를 선택하면 테마에 포함된 image리스트를 볼 수 있습니다.

Tree_Image_2

Grid cell 설정

Tree_Image_3

웹 이미지

웹 상의 이미지를 이용하는 방법입니다. 호출 가능한 웹 url 경로를 입력해 줍니다.
Grid cell에서 아래와 같이 설정할 수 있습니다.

Tree_Image_4

로컬이미지

로컬의 이미지를 prefix를 이용하여 로컬 경로를 설정 후, 호출할 수 있습니다.
Prefix 지정은 TypeDefinition 더블클릭 > Services 탭에서 지정할 수 있습니다.

TypeDefinition 설정

Tree_Image_5

Grid cell 설정(prefix명 :: 이미지명)

Tree_Image_6

Global Image

GlobalVariables의 Images Tag에 선언된 이미지를 호출하여 설정할 수 있습니다.
GlobalVariables에 image를 추가하는 방법입니다.
GlobalVariables 오른쪽마우스클릭 > Insert GlobalVariables Item > Image를 선택하면 파일다이얼로그 창이 뜨며, image를 선택하여 열기 하면 Images에 image가 추가 됩니다.

Tree_Image_7

Grid cell 설정(이미지명)

Tree_Image_8

소스 위치

Sample\Grid\np_Tree_Image.xfdl

level별 간격조절

Tree_Sapce_0

Tree의 Padding  속성을
이용하여 level 별 간격을 다르게 표현할 수 있습니다.

expr를 이용한 padding설정

Tree_lebelSpace_1

padding에서 지정한 함수의 내용은 아래와 같습니다.

this.fn_getlvl = function(lvl){
 if(lvl==2) return '0 0 0 50'; 
}

return 순서 (Top Right Bottom Left)

소스 위치

Sample\Grid\np_Tree_Space.xfdl

Tree text컬럼 편집하기

Grid를 트리로 사용하는 경우 일반적으로 셀의 편집은 바인딩을 이용한 입력용 컴포넌트를 이용합니다.
Grid에서 직접 편집을 원하는 경우 edittype 속성을 변경하여 구현을 할 수 있습니다.

Grid_TreeEdit_0

Cell속성 editautoselect 설정

np_Grid_Column_TreeEdit_1

Grid 셀 편집 시 데이터를 전체 선택할 수 있도록 Grid Contents Editor에서 editautoselect 속성을 ‘true’로 변경합니다.

주요 소스 내용

this.grd_output_onselectchanged = function(obj:Grid, e:nexacro.GridSelectEventInfo)
{
 this.grd_output.setCellProperty( "Body", 0, "edittype", "tree");
}
 
this.grd_output_oncelldblclick = function(obj:Grid, e:nexacro.GridClickEventInfo)
{
 if (e.col == 0)
 {
  this.grd_output.setCellProperty( "Body", 0, "edittype", "normal");
 } 
}
Tree Label컬럼에서 cell을  DoubleClick식 edittype를 normal로 변경하고  
컬럼의 값이 변경되면 다시 tree형태로 변경해 주는 작업을 코딩으로 구현합니다.

트리

소스 위치

Sample\Grid\np_Tree_Edit.xfdl